Python中单链表的数据常见操作及实现是什么
Admin 2022-08-15 群英技术资讯 1128 次浏览
在实际应用中,我们有时候会遇到“Python中单链表的数据常见操作及实现是什么”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“Python中单链表的数据常见操作及实现是什么”文章能帮助大家解决问题。链表的定义:
链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列。也就是说,结点包含两部分信息:一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域。链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点。链表中的最后一个结点没有后继元素,其指针域为空。
当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。
单链表的结构示意图如下:

代码如下:
#结点定义 class Node(object): def __init__(self,val,p=0): self.data = val self.next = p #链表操作 class LinkList(object): #定义头结点 def __init__(self): self.head = 0 def __getitem__(self, key): if self.is_empty(): print('链表为空!') return elif key <0 or key > self.getlength(): print('键入值错误!') return else: return self.getitem(key) def __setitem__(self, key, value): if self.is_empty(): print('链表为空!') return elif key <0 or key > self.getlength(): print('键入值错误!') return else: self.delete(key) return self.insert(key) #初始化链表 def initlist(self,data): self.head = Node(data[0]) p = self.head for i in data[1:]: node = Node(i) p.next = node p = p.next #获取链表长度 def getlength(self): p = self.head length = 0 while p!=0: length+=1 p = p.next return length #判断链表是否为空 def is_empty(self): if self.getlength() ==0: return True else: return False def clear(self): self.head = 0 #单链表添加操作,在尾部添加结点 def append(self,item): #q为待添加的结点 q = Node(item) if self.head ==0: self.head = q else: p = self.head while p.next!=0: p = p.next p.next = q #获取结点数据域的值 def getitem(self,index): if self.is_empty(): print('链表为空!') return j = 0 p = self.head while p.next!=0 and j <index: p = p.next j+=1 if j ==index: return p.data else: print('对象不存在!') #链表数据插入操作 def insert(self,index,item): if self.is_empty() or index<0 or index >self.getlength(): print('链表为空!') return if index ==0: q = Node(item,self.head) self.head = q p = self.head post = self.head j = 0 while p.next!=0 and j<index: post = p p = p.next j+=1 if index ==j: q = Node(item,p) post.next = q q.next = p #链表数据删除操作 def delete(self,index): if self.is_empty() or index<0 or index >self.getlength(): print('链表为空!') return if index ==0: q = Node(item,self.head) self.head = q p = self.head post = self.head j = 0 while p.next!=0 and j<index: post = p p = p.next j+=1 if index ==j: post.next = p.next def index(self,value): if self.is_empty(): print('链表为空!') return p = self.head i = 0 while p.next!=0 and not p.data ==value: p = p.next i+=1 if p.data == value: return i else: return -1 link = LinkList() link.initlist([1,2,3,4,5]) print(link.getitem(4)) link.append(6) print(link.getitem(5)) link.insert(4,40) print(link.getitem(3)) print(link.getitem(4)) print(link.getitem(5)) link.delete(5) print(link.getitem(5)) link.index(5)
运行结果:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
内容介绍背景代码代码说明:验证一下附:bytes和string区别总结背景在工作中经常会碰到字节串(bytes)与字符串(string)之间转换的问题,做个记录。bytes只负责用字节序列的形式(二进
今天教各位小伙伴怎么用Python处理excel,文中有非常详细的代码示例及相关知识总结,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
递归函数是直接调用自己或通过一系列语句间接调用自己的函数。递归在程序设计有着举足轻重的作用,在很多情况下,借助递归可以优雅的解决问题。本节主要介绍递归的基本概念以及如何构建递归程序。
这篇文章主要介绍了Tensorflow中使用cpu和gpu有什么区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Python错误+异常+模块总结,在编程时遇见错误信息在所难免,Python中会也有很多种错误信息,常见的两种就是语法错误和逻辑错误,下文我们就来总结一下那些常见的异常,需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008