链表逆序---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 ...
随机推荐
- Spring AOP 用法浅谈(Day_18)
当你这一天没有在进步,那你就是在退步! [简述] Aspect Oriented Programming :面向切面编程 所谓面向切面编程,是一种通过预编译和运行期动态代理的方式实现在不修改源代码的情 ...
- MongoDB(7)- 文档插入操作
插入方法 db.collection.insertOne() 插入单条文档到集合中 db.collection.insertMany() 插入多条文档到集合中 db.collection.insert ...
- CoSky-Mirror 就像一个镜子放在 Nacos、CoSky 中间,构建一个统一的服务发现平台
CoSky 基于 Redis 的服务治理平台(服务注册/发现 & 配置中心) Consul + Sky = CoSky CoSky 是一个轻量级.低成本的服务注册.服务发现. 配置服务 SDK ...
- 如何使用 IoC
创建Maven工程,pom.xml添加依赖 <?xml version="1.0" encoding="UTF-8"?> <project x ...
- 转载 | Scala 如何避免使用 Null
在 Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的. Scala 的 Option类型 Scala在变量和函数返回值可能不会引用任何值的时候使用 Option 类型 ...
- Django(53)二次封装Response
前言 有时候我们使用drf的Response,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式 return Response({ "status": 0, " ...
- 实用的jar包加密方案
前言 jar包相信大家都很熟悉,是通过打包java工程而获得的产物,但是jar包是有一个致命的缺点的,那就是很容易被反编译,只需要使用jd-gui就可以很容易的获取到java源码. 如果你想要防止别人 ...
- Java中List和Map的区别
一.List和Map 1.特点 (1).List 1.可以允许重复的对象. 2.可以插入多个null元素. 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序. 4.常用的实现类有 ...
- oracle单机开机自启动
====================== 单机数据库开机自启动 ============================= 环境: oracle数据库单机 版本:11.2.0.4 1.修改配置文 ...
- [USACO3.1]最短网络 Agri-Net
题目背景 Farmer John 被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 FJ 已经给他的农场安排了一条高速的网络线路,他想 ...