python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例

本文实例讲述了Python实现数据结构线性链表(单链表)算法。分享给大家供大家参考,具体如下:

初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。

#!/usr/bin/python

# -*- coding:utf-8 -*-

# Author: Hui

# Date: 2017-10-13

# 结点类,

class Node:

def __init__(self, data):

self.data = data # 数据域

self.next = None # 指针域

def get_data(self):

return self.data

# 链表类

class List:

def __init__(self, head):

self.head = head # 默认初始化头结点

def is_empty(self): # 空链表判断

return self.get_len() == 0

def get_len(self): # 返回链表长度

length = 0

temp = self.head

while temp is not None:

length += 1

temp = temp.next

return length

def append(self, node): # 追加结点(链表尾部追加)

temp = self.head

while temp.next is not None:

temp = temp.next

temp.next = node

def delete(self, index): # 删除结点

if index < 1 or index > self.get_len():

print "给定位置不合理"

return

if index == 1:

self.head = self.head.next

return

temp = self.head

cur_pos = 0

while temp is not None:

cur_pos += 1

if cur_pos == index-1:

temp.next = temp.next.next

temp = temp.next

def insert(self, pos, node): # 插入结点

if pos < 1 or pos > self.get_len():

print "插入结点位置不合理..."

return

temp = self.head

cur_pos = 0

while temp is not Node:

cur_pos += 1

if cur_pos == pos-1:

node.next = temp.next

temp.next =node

break

temp = temp.next

def reverse(self, head): # 反转链表

if head is None and head.next is None:

return head

pre = head

cur = head.next

while cur is not None:

temp = cur.next

cur.next = pre

pre = cur

cur = temp

head.next = None

return pre

def print_list(self, head): # 打印链表

init_data = []

while head is not None:

init_data.append(head.get_data())

head = head.next

return init_data

if __name__ == '__main__':

head = Node("head")

list = List(head)

print '初始化头结点:\t', list.print_list(head)

for i in range(1, 10):

node = Node(i)

list.append(node)

print '链表添加元素:\t', list.print_list(head)

print '链表是否空:\t', list.is_empty()

print '链表长度:\t', list.get_len()

list.delete(9)

print '删除第9个元素:\t',list.print_list(head)

node = Node("insert")

list.insert(3, node)

print '第3个位置插入‘insert'字符串 :\t', list.print_list(head)

head = list.reverse(head)

print '链表反转:', list.print_list(head)

执行结果:

希望本文所述对大家Python程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle conneciton properties,在WAS Liberty连接池中,我可以验证借用连接吗?

我们当前正在将应用程序迁移到Liberty服务器(8.5.5.9)上运行。我们发现应用程序服务器和数据库之间的连接偶尔会被防火墙终止&#xff0c;因为它们会在很长一段时间内处于空闲状态。发生这种情况时&#xff0c;在下一个HTTP请求中&#xff0c;应用程序将收到其中一个断开的连接…

python图形化编程工具哪个好_mPython(图形化编程软件) V0.5.0 官方版

mPython 是一款针对Python 3编程语言的图形化编辑工具。支持函数&#xff0c;仿真、hex、python、blockly三种代码读写等功能。并可以与TPYBoard系类开发板配合使用&#xff0c;直接连接PC端进行编程。【功能特点】 1、不依赖网络&#xff0c;可离线安装使用 2、支持hex、pytho…

python三种变量方式_python2.x 3种变量形式调用

python 变量使用raw_input 2.x input 3.x第一种name input("name:")age input("age:")job input("job:")info ----------info - %s ----------Name: %sAge: %sJob: %s% (name,name,age,job)print (info)第二种name input("name:"…

linux更新系统内核,如何更新Linux内核来提升系统性能?

Linux内核的开发速度是前所未有的&#xff0c;大概每二三个月就会有一个新的主要版本发布。每次发布都带来了几项新的功能和改进&#xff0c;许多人可以充分利用它们&#xff0c;让计算体验更快、更高效或者有其他方面的提升。可问题是&#xff0c;你通常无法充分利用这些刚发布…

php对接V免签支付教程_【全网首发】最新版影视小程序搭建教程完整版

大家好&#xff0c;这里是深海网络&#xff0c;今天给大家讲解一下新版影视小程序搭建。  首先给大家看一下新版影视小程序是什么样子的&#xff0c;它有黑夜和白天两种观影模式&#xff0c;而且搜索精准&#xff0c;播放速度快。01第一步&#xff0c;开始正式搭建。新版区小…

linux编译代码命令,Linux下使用GCC命令编译代码

Linux下初学时最好从命令行入手&#xff0c;这样可以熟悉从编写程序、编译、调试和执行的整个过程。编写程序可以用vi/vim(个人觉得vim比vi好用)或其它编辑器编写。编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。gcc命令提供了非常多的命令选项&#xff0c;但并不是…

简要描述内部连接和外部连接之间的区别_sqlserver的几种常见连接方法

感谢本文几种描述方法&#xff0c;让我解决了最近的一段时间的疑问&#xff0c;转载下来&#xff0c;以供后面查血使用。本文链接&#xff1a;https://blog.csdn.net/huanghanqian/article/details/52847835四种join的区别已老生常谈&#xff1a;INNER JOIN(也可简写为JOIN): 如…

有两个python怎么停用其中一_python3.X 复学(2)-----开始了就不要停止

生命就是一种旅行&#xff0c;开始了就不要停止&#xff0c;无非就是眼前的苟且还有以后的苟且&#xff0c;只要还有一口气 ----------hashlinux 因为Python是跨平台的&#xff0c;它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序&#xff0c;放到Li…

react项目中的参数解构_一天入门React学习心得

一天入门React学习心得阅读前必读本文写的仓促&#xff0c;算是一个学习笔记吧&#xff0c;算是一个入门级的学习文章。如果你刚刚入门&#xff0c;那么可能一些入门的视频可能更加适合你。但如果具备一些知识&#xff0c;比如Vue&#xff0c;那么视频就不适合了。建议看完本篇…

python random函数_详细代码实战讲解:如何用 Python让自己变成天选之子

今天为大家带来的内容是&#xff1a;详细代码讲解&#xff1a;如何用 Python让自己变成天选之子话不多说直接上代码&#xff1a;请大家猜一猜下面这段代码的运行效果&#xff1a;你是不是以为这段代码运行以后&#xff0c;结果如下图所示&#xff1f;但实际上&#xff0c;我可以…

安卓图标_干货 | 安卓界面系统规范

众所周知&#xff0c;安卓系统是开源的&#xff0c;国内又有超多的手机厂商&#xff0c;小米、魅族、华为、oppo、三星等&#xff0c;每一个品牌有属于自己的UI设计规范&#xff0c;但是我们主要分析UI界面尺寸规范。1、字体安卓系统中文采用的是思源黑体&#xff0c;英文字体为…

pyqt安装_Win10下安装LabelImg以及使用(绝对是全网最简单的教程)

labelImg是图片标注软件&#xff0c;用于数据集的制作、标注等等。下面介绍labelImg的安装过程。我用的是anaconda&#xff0c;所以以anaconda prompt作为终端&#xff1a;在Anaconda Prompt中依次运行以下命令&#xff08;注意大小写&#xff09;&#xff1a;pip install PyQt…

delphi listview 添加数据 慢_ListView 的缓存机制

一.前言ListView 作为一个 Android 5.x 之前的一个用于显示数据列表的控件&#xff0c;或许在今天都已经被 RecyclerView 完全替代&#xff0c;但是其中的缓存机制仍然值得我们去了解&#xff0c;对后面学习 RecyclerView 的缓存机制有很大的帮助。下面将根据 ListView 的三个过…

c++ 显示三维散点图_【无机纳米材料科研制图——OriginLab 0210】Origin多组柱状图3D柱状图及3D散点图...

此篇&#xff0c;我们来分享Origin绘制多组柱状图、立体柱状图和三维散点图。一、多组柱状图1&#xff09;准备数据。准备数据&#xff0c;并点击Plot——》Column/Bar/Pie——》Column进行绘制。结果如下。2&#xff09;带有误差棒的绘图。如果想绘制带有误差棒的直方图&#…

保存文件_wps文件保存在哪里

我们经常使用WPS进行文本、表格的编辑&#xff0c;有时候顺手点击保存之后&#xff0c;文件就会根据默认文件路径保存&#xff0c;如果您不知道默认的文件保存路径&#xff0c;怎么才能够找到刚刚保存的文件&#xff0c;下面就为大家介绍一下wps文件保存在哪里&#xff0c;希望…

linux 内核io操作,关于Linux内核中的异步IO的使用

我们都知道异步IO的作用&#xff0c;就是可以提高我们程序的并发能力&#xff0c;尤其在网络模型中。在linux中有aio的一系列异步IO的函数接口&#xff0c;但是这类函数都是glibc库中的函数&#xff0c;是基于多线程实现&#xff0c;不是真正的异步IO&#xff0c;在内核中有真正…

linux内核模块实验,linux内核模块实验(2学时).doc

第一个内核模块实验一&#xff1a; 预习要求&#xff1a;( 1 ) 做本实验之前&#xff0c;请复习相关内核模块知识。( 2 ) 请了解内核模块的编写、编译及安装与卸载方法。( 3 ) 请学习内核打印函数 printk() 的用法。( 4 ) 请复习 Makefile 文件的编写。二&#xff1a;实验目的&…

mobi格式电子书_进阶能力 | 了解常见的电子书格式

静读君是初中开始接触电子书的&#xff0c;那个时候以为电子书就是TXT&#xff0c;到后来渐渐地接触到了PDF、DOC、CAJ 才知道原来电子书还分这么多的格式&#xff0c;那个时候还在想&#xff0c;为什么要弄这么多不同的格式呢&#xff1f;那不是自找麻烦吗&#xff1f;接触的…

python的pass在函数中的作用_Pass Share:Python / Julia 中函数变量的传递机制

从 C / MATLAB 过来的同学注意&#xff01;Julia / Python 中使用的参数传递变量方式是不一样的。(以C的眼光看)在语法上细微的差别就会产生完全不一样的内容。(至少我被坑了很多次)。这篇文章的主要作用是逃坑以及方便各种从不同语言过来的人投奔我们Julia&#xff01;/狗头变…

linux启动keepalived服务,llinux企业常用服务---HA+keepalived双机热备

部署前准备&#xff1a;iptables和selinux没配置&#xff0c;关掉挂载系统镜像作为本地yum源&#xff0c;修改yum文件源码包准备keepalived-1.2.13.tar.gz环境介绍&#xff1a;2台centos6.5虚拟机&#xff0c;主服务器ip&#xff1a;192.168.100.150&#xff1b;从服务器ip&…