本文实例为大家分享了Python数据结构之单链表的具体代码,供大家参考,具体内容如下
# 节点类
class Node():
__slots__=['_item','_next'] # 限定Node实例的属性
def __init__(self,item):
self._item = item
self._next = None # Node的指针部分默认指向None
def getItem(self):
return self._item
def getNext(self):
return self._next
def setItem(self,newitem):
self._item = newitem
def setNext(self,newnext):
self._next=newnext
# 单链表
class SingleLinkedList():
def __init__(self):
self._head = None #初始化链表为空 始终指向链表的头部
self._size = 0 # 链表大小
# 返回链表的大小
def size(self):
current = self._head
count = 0
while current != None:
count += 1
current = current.getNext()
return count
# 遍历链表
def travel(self):
current = self._head
while current != None:
print(current.getItem())
current = current.getNext()
# 检查链表是否为空
def isEmpty(self):
return self._head == None
# 在链表前端添加元素
def add(self,item):
temp = Node(item) # 创建新的节点
temp.setNext(self._head) # 新创建的next指针指向_head
self._head = temp # _head指向新创建的指针
# 在链表尾部添加元素
def append(self,item):
temp = Node(item)
if self.isEmpty():
self._head = temp # 若为空表就直接插入
else:
current = self._head
while current.getNext() != None:
current = current.getNext() # 遍历列表
current.setNext(temp) # 此时current为链表最后的元素,在末尾插入
# 检索元素是否在链表中
def search(self,item):
current = self._head
founditem = False
while current != None and not founditem:
if current.getItem() == item:
founditem = True
else:
current = current.getNext()
return founditem
# 索引元素在表中的位置
def index(self,item):
current = self._head
count = 0
found = None
while current != None and not found:
count += 1
if current.getItem() == item:
found = True
else:
current = current.getNext()
if found:
return count
else:
return -1 # 返回-1表示不存在
# 删除表中的某项元素
def remove(self,item):
current = self._head
pre = None
while current!=None:
if current.getItem() == item:
if not pre:
self._head = current.getNext()
else:
pre.setNext(current.getNext())
break
else:
pre = current
current = current.getNext()
# 在链表任意位置插入元素
def insert(self,pos,item):
if pos <= 1:
self.add(item)
elif pos > self.size():
self.append(item)
else:
temp = Node(item)
count = 1
pre = None
current = self._head
while count < pos:
count += 1
pre = current
current = current.getNext()
pre.setNext(temp)
temp.setNext(current)
if __name__=='__main__':
a=SingleLinkedList()
for i in range(1,10):
a.append(i)
print('链表的大小',a.size())
a.travel()
print(a.search(6))
print(a.index(5))
a.remove(4)
a.travel()
a.insert(4,100)
a.travel()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Python
# 单链表
# python实现顺序表的简单代码
# Python中顺序表的实现简单代码分享
# Python数据结构之顺序表的实现代码示例
# python数据结构之线性表的顺序存储结构
# python数据结构学习之实现线性表的顺序
# Python实现的数据结构与算法之链表详解
# python数据结构链表之单向链表(实例讲解)
# Python数据结构之翻转链表
# python数据结构之链表详解
# Python 数据结构之旋转链表
# Python中顺序表原理与实现方法详解
# 链表
# 遍历
# 为空
# 数据结构
# 不存在
# 大家分享
# 具体内容
# 大家多多
# 某项
# 若为
# getItem
# return
# item
# _next
# def
# setNext
# newnext
# SingleLinkedList
# getNext
# setItem
相关文章:
C++用Dijkstra(迪杰斯特拉)算法求最短路径
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
建站主机选购指南:核心配置与性价比推荐解析
如何在Windows环境下新建FTP站点并设置权限?
怎么将XML数据可视化 D3.js加载XML
TestNG的testng.xml配置文件怎么写
视频网站app制作软件,有什么好的视频聊天网站或者软件?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
建站之星伪静态规则如何设置?
如何选择最佳自助建站系统?快速指南解析优劣
建站主机如何选?高性价比方案全解析
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
深入理解Android中的xmlns:tools属性
如何安全更换建站之星模板并保留数据?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何选择适配移动端的WAP自助建站平台?
如何在阿里云域名上完成建站全流程?
,制作一个手机app网站要多少钱?
公司门户网站制作流程,华为官网怎么做?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
图册素材网站设计制作软件,图册的导出方式有几种?
如何在香港免费服务器上快速搭建网站?
如何通过网站建站时间优化SEO与用户体验?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
SQL查询语句优化的实用方法总结
如何快速上传自定义模板至建站之星?
教学网站制作软件,学习*后期制作的网站有哪些?
制作网站的公司有哪些,做一个公司网站要多少钱?
微课制作网站有哪些,微课网怎么进?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
h5网站制作工具有哪些,h5页面制作工具有哪些?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
视频网站制作教程,怎么样制作优酷网的小视频?
如何解决ASP生成WAP建站中文乱码问题?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
建站之星2.7模板:企业网站建设与h5定制设计专题
MySQL查询结果复制到新表的方法(更新、插入)
如何快速生成高效建站系统源代码?
建站ABC备案流程中有哪些关键注意事项?
如何快速搭建高效WAP手机网站吸引移动用户?
如何正确下载安装西数主机建站助手?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
*请认真填写需求信息,我们会在24小时内与您取得联系。