链表的结构

张开发
2026/4/11 12:04:40 15 分钟阅读

分享文章

链表的结构
单链表单向链表是链表的一种形式每个节点包含两个域元素域内容域和链接域地址域每个节点的地址指向一个节点最后一个节点的地址指向一个空值None1内容域item)用来存放具体的数据2地址域next)用来存放下一个节点的位置3head指向链表的头节点从head出发可以找到链表中的任意节点通过代码来实现链表1自定义SingLeNode类用来表示节点属性item 元素域内容域next 链接域地址域2自定义SingLinkList类用于表示链表属性head 表示头节点指向第一个节点行为判断是否为空链表的长度遍历链表链表头部添加元素链表尾部添加元素指定位置添加元素删除节点查看节点是否存在指向新#创建节点类class SingLeNode:def __init__(self,item):self.item itemself.next None​#创建链表类class SingLinkList:def __init__(self,node None):self.node node#判断链表是否为空def is_empty(self):if self.node is None:return Trueelse:return Falsereturn True if self.node is None else Falsereturn self.node is None​#链表长度def len(self):cur self.nodecount 0while cur is not None:count 1cur cur.nextreturn count​#遍历链表def travel(self):cur self.nodewhile cur is not None:print(cur.item)cur cur.next​#头部添加def add(self,item):new_node SingLeNode(item)new_node.next self.nodeself.node new_node​#尾部添加def append(self,item):new_node SingLeNode(item)if self.is_empty():self.node new_nodeelse:cur self.nodewhile cur.next is not None:cur cur.nextcur.next new_node​#添加节点def insert(self,pos,item):#判断位置如果是头结点if pos 0:self.add(item)#判断位置是否为尾节点elif pos self.len():self.append(item)else:#往中间插#建立游标默认head开始cur self.node#创建变量记录当前位置count 0#遍历while count pos - 1:#没找到插入的节点cur cur.nextcount 1#创建新的节点new_node SingLeNode(item)#将新节点地址指向原节点的地址new_node.next cur.next#原节点只指向新节点cur.next new_node​#删除def remove(self,item):#创建游标指的是当前节点cur self.node#定义变量记录前一个节点pre None#遍历节点只要节点不为空就一直遍历while cur is not None:#找到要删除的节点if cur.item item:#判断删除的节点是否为头节点if cur self.node:self.node cur.nextelse:#删除的不是头节点pre.next cur.nextcur.next None #删除节点returnelse:#没有找到要删除的节点#将节点赋给pre才能移动游标pre curcur cur.next​#查找节点def search(self,item):cur self.nodewhile cur is not None:if cur.item item:return 存在cur cur.nextreturn 不存在​​​if __name__ __main__:node1 SingLeNode(10)# print(node1)# print(node1.item)# print(node1.next)# print(type(node1))#l1 SingLinkList(node1)# l2 SingLinkList()# print(l1.node)# print(l1.node.item)# print(l1.node.next)# print(type(l1.node))# print(l2.node)## print(l1.is_empty)​l1.add(20)l1.add(30)l1.append(59)l1.append(60)l1.insert(3,40)print(l1.len())​l1.travel()

更多文章