链表逆序---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 ...
随机推荐
- HTTP状态 500 - 内部服务器错误之Could not open ServletContext resource [/db.properties]或者 [/mybatis.xml]
报错原因是因为找不到db.properties或者mybatis.xml,但是我明明写了有.找了一下,才发现spring-dao.xml里面这两个配置文件地址有问题 Maven项目,applicati ...
- Python+Selenium自动化-设置浏览器大小、刷新页面、前进和后退
Python+Selenium自动化-设置浏览器大小.刷新页面.前进和后退 1.设置浏览器大小 maximize_window():设置浏览器大小为全屏 set_window_size(500,5 ...
- Docker学习(2) 安装
1 在Ubanru中安装 简单安装: 2 windows安装docker 3 OS X 安装docker
- TensorFlow多元线性回归实现
多元线性回归的具体实现 导入需要的所有软件包: 因为各特征的数据范围不同,需要归一化特征数据.为此定义一个归一化函数.另外,这里添加一个额外的固定输入值将权重和偏置结合起来.为此定义函数 appe ...
- Nsight Compute Profilier 分析
profiler报告包含每次内核启动分析期间收集的所有信息.在用户界面中,它包含一个包含常规信息的标题,以及用于在报告页面或单个收集的启动之间切换的控件.默认情况下,报告以选定的详细信息页面开始. 页 ...
- Eclipse修改默认的语言编码设置,处理乱码
Eclipse中设置:
- Javaweb:Servlet
servlet简介 Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行在服务器端的程序.具有独立于平台和协议的特性,主要功能在于交互式地 ...
- 【NX二次开发】NX内部函数,libuifw.dll文件中的内部函数
本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void U ...
- nvm安装管理nodejs
安装nodejs运行环境 相关连接 步骤 下载nvm-window并安装: https://github.com/coreybutler/nvm-windows/releases 下载完成后直接解压安 ...
- Maven笔记(更新中)
Maven 1.学习目标 会使用maven构建项目的命令 会使用maven构建java项目和java web项目 依赖管理--传递依赖 版本冲突处理 在web的单个工程中实现jsp+servlet整合 ...