链表逆序---python
class ListNode:
Value = '' # 节点要储存的值,因为Python是弱类型,因此无需传入泛型
Next = None # 下一个节点,初始化时为空值 def __init__(self, value): # 初始化,默认初始化节点时,必须给定节点要储存的值(Value)。
self.Value = value
self.Next = None def set_next(self, next): # 指定下一个节点(Next)。
self.Next = next def get_value(self): # 获取当前节点所存储的值
return self.Value def get_next(self): # 获取下一个节点
return self.Next class List:
Head = None # 头结点 def __init__(self): # 初始化链表函数
self.Head = ListNode(0) # 初始化链表时即初始化头结点,其内的值为0 def add(self, value): # 添加节点函数
node = self.Head
node.Value += 1 # 头结点中存储的长度+1
while node.Next is not None:
node = node.Next
node.Next = ListNode(value) # 初始化新节点,并添加到末尾 def print_list(self): # 打印列表函数
node = self.Head
print('The List Length is ', end='')
print(node.get_value(), end=' :[') # 打印一下列表总长度
if node.Next is None: # 如果是空链表直接结束
print("]")
return
node = node.Next # 从头结点下一个节点开始操作
while node.Next is not None:
print(node.get_value(), end=' ,') # 打印节点值
node = node.Next # 下一节点
print(node.get_value(), end=']\n') # 打印最后一个节点并换行 def reverse(self): # 将链表逆序函数
print("逆序操作!")
head = self.Head # 头结点先拿出来
if head.Next is None:
return # 如果只有头结点,便直接返回
node = head.Next # 从头结点下一个节点开始操作
temp = None # 记录下一节点的临时值
pre = None # 记录上一节点的临时值
while node.Next is not None: # 当下一节点不为空的时候循环
temp = node.Next # 先记住本节点的下一节点
node.Next = pre # 让本节点指向上一节点【核心操作】
pre = node # 将上一节点临时指针后移
node = temp # 将本节点后移
node.Next = pre # 当循环结束之后,最后一个节点指向前一节点,完成链表逆序
head.Next = node # 将头结点指向新的链表起始节点 if __name__ == '__main__': # 主函数开始
my_list = List() # 初始化链表
for i in range(0, 10):
my_list.add(i) # 增加节点值
my_list.print_list() # 打印一下
my_list.reverse() # 逆序操作
my_list.print_list() # 再打印一下看看
链表逆序---python的更多相关文章
- Reverse Linked List II 单向链表逆序(部分逆序)
0 问题描述 原题点击这里. 将单向链表第m个位置到第n个位置倒序连接.例如, 原链表:1->2->3->4->5, m=2, n =4 新链表:1->4->3-& ...
- 链表逆序(JAVA实现)
题目:将一个有链表头的单向单链表逆序 分析: 链表为空或只有一个元素直接返回: 设置两个前后相邻的指针p,q,使得p指向的节点为q指向的节点的后继: 重复步骤2,直到q为空: 调整链表头和链表尾: 图 ...
- ZT 链表逆序
链表逆序 原帖地址http://blog.csdn.net/niuer09/article/details/5961004 分类: C/C++2010-10-23 17:23 18425人阅读 评论( ...
- 链表逆序,java实现
package com.cskaoyan.linkedlist; //反转数组 public class LinkedListDemo2 { public static Node reverse(No ...
- C# 单向链表 逆序(递归)
static void Main(string[] args) { while (true) { LinkedList L = new LinkedList(); L.Add(new Node(&qu ...
- 剑指Offer03 逆序输出链表&链表逆序
多写了个逆序链表 /************************************************************************* > File Name: ...
- 基于visual Studio2013解决面试题之0504单链表逆序
题目
- 【云栖社区001-数据结构】如何实现一个高效的单向链表逆序输出(Java版)
如题 动手之前,发现自己很擅长用C语言来写链表. 不过,既然自己做的是Java开发,那么还是用Java实现这个算法吧:毕竟,以后的若干年里都差不多要跟Java打交道了. 于是,先将Java版的链表自学 ...
- C语言两个升序递增链表逆序合并为一个降序递减链表,并去除重复元素
#include"stdafx.h" #include<stdlib.h> #define LEN sizeof(struct student) struct stud ...
随机推荐
- 【Web前端HTML5&CSS3】12-字体
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 字体 1. 字体相关的样式 2. font-family 3. 几种字体 手写体 艺术体 乱码字体 中文字体 4 ...
- 数据流分析软件SQLFlow的工作原理
SQLFlow是一个可视化的在线处理SQL对象依赖关系的工具,只需要上传你的SQL脚本,它可以自动分析SQL里的数据对象,包括database.schema.table.view.column.pro ...
- Python+Selenium学习笔记9 - 警告框处理
如下图所示,这种窗口是不能通过前端工具对其进行定位的,这里可以通过switch_to_alert()方法去接受这个弹窗 1 # coding = utf-8 2 3 from selenium imp ...
- java中的NIO和IO到底是什么区别?20个问题告诉你答案
摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...
- Proteus仿真MSP430单片机的若干问题记录
1.支持的具体型号: P7.8: Proteus8.9: Proteus8.9能够支持的类型明显要多于Proteus7.8.但是对于仿真而言,目前个人还是觉得Proteus7.8更稳定.这也是目前能用 ...
- MindSpore整体架构介绍
MindSpore整体架构介绍 MindSpore框架架构总体分为MindSpore前端表示层.MindSpore计算图引擎和MindSpore后端运行时三层. MindSpore前端表示层(Mind ...
- TensorRT 基于Yolov3的开发
TensorRT 基于Yolov3的开发 Models Desc tensorRT for Yolov3 https://github.com/lewes6369/TensorRT-Yolov3 Te ...
- Mask R-CNN用于目标检测和分割代码实现
Mask R-CNN用于目标检测和分割代码实现 Mask R-CNN for object detection and instance segmentation on Keras and Tenso ...
- CentOS 6.x 安装图形界面
CentOS 6.x 安装图形界面一.首先查看系统的运行级别以及是否安装了桌面环境1.使用命令 runlevel 查看当前系统运行级别[root@42 ~]# runlevelN 32.使用命令 yu ...
- 快速上手pandas(上)
pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation to ...