链表逆序---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 ...
随机推荐
- docker私有仓库搭建及使用
1.下载官方镜像 sudo docker pull registry 下载完成后,docker images可以查看到pull下来的镜像registry 2.启动registry容器,用于提供私有 ...
- 女朋友看了也懂的Kafka(上篇)
@ 目录 前言:为什么需要Kafka 1.初识kafka 1.1 消息队列的好处: 1.2 消息队列的两种模式 没有消息队列我们怎么做? 传统MQ怎么做? 这时候,Kafka就"闪亮登场&q ...
- C# MVC(File)控件多张图片上传加预览
刚来公司实习,老板叫我写一个积分商城网站.用的是公司的框架结构搭建的后台,所以后台的图片上传不需要自己写.但是前台的评价图片就需要自己手写了,在网上找了很多代码发现都用不了.问了很多人也都没有实现! ...
- TensorFlow csv读取文件数据(代码实现)
TensorFlow csv读取文件数据(代码实现) 大多数人了解 Pandas 及其在处理大数据文件方面的实用性.TensorFlow 提供了读取这种文件的方法. 前面章节中,介绍了如何在 Tens ...
- 语义分割:基于openCV和深度学习(一)
语义分割:基于openCV和深度学习(一) Semantic segmentation with OpenCV and deep learning 介绍如何使用OpenCV.深度学习和ENet架构执行 ...
- IDEA骚技巧
1. var 声明 2. null 判空 3. notnull 判非空 4. nn 判非空 5. for 遍历 6. fori 带索引的遍历 7. not 取反 8. if 条件判断 9. cast ...
- jmeter--JSON Extractor 用法
JMeter处理大部分请求返回的结果,都是json.对于请求返回的结果,处理以后作为其他请求的参数,有一个方便使用的插件:JSON Extractor JSON Extractor中文叫做json提取 ...
- StackOverflow经典问题:代码中如何去掉烦人的“!=null"判空语句
问题 为了避免空指针调用,我们经常会看到这样的语句 if (someobject != null) { someobject.doCalc();} 最终,项目中会存在大量判空代码,多么丑陋繁冗!如何避 ...
- noip2006总结
T1 能量项链 原题 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子 ...
- hash表及带注释插头dp
struct hash_map { node s[SZ+10];int e,adj[SZ+10]; inline void init(){e=0;memset(adj,0,sizeof(adj));} ...