首页IT科技python循环链表方法(Python单向循环链表的创建)

python循环链表方法(Python单向循环链表的创建)

时间2025-06-16 05:09:24分类IT科技浏览4076
导读:说明...

说明

1            、当实例化一个单向循环链表时             ,该链表是一个空链表                   ,在将节点依次链接之后      ,链表中才会出现节点和数据            。

2                   、在链表中      ,为了找到链表的某个节点                   ,需要从链表的头节点开始            ,依次搜索                   。

因此      ,在实例单向循环链表中                   ,必须定义链表的头       。当添加头节点时            ,链表的头指向头节点            。

实例

classNode(object): def__init__(self,elem): """ :paramelem:表元素域 next:下一结点链接域 cursor(cur):游标 """ self.elem=elem #定义next指向空 self.next=None classSingleCircularLinkList(object): """ 单向循环链表:单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为none                   ,而是指向链表的头节点 """ def__init__(self,node=None): self.__head=node#node.elemnode.next ifnode: node.next=node defis_empty(self): """链表是否为空""" returnself.__headisNone deflength(self): """链表长度""" ifself.is_empty(): return0 #cur游标                  ,用来移动遍历节点 cur=self.__head count=1 whilecur.next!=self.__head: count+=1 cur=cur.next #count记录数量 returncount deftravel(self): """遍历整个链表""" ifself.is_empty(): return cur=self.__head whilecur.next!=self.__head: print(cur.elem,end=) cur=cur.next #退出循环,cur指向尾结点             ,但尾节点的元素未打印 print(cur.elem) defadd(self,item): """链表头部添加元素:头插法""" node=Node(item) ifself.is_empty(): self.__head=node node.next=node else: cur=self.__head whilecur.next!=self.__head: cur=cur.next #退出循环                  ,cur指向尾结点 node.next=self.__head self.__head=node #方式1:cur.next=node cur.next=self.__head#方式2 defappend(self,item): """链表尾部添加元素:尾插法""" node=Node(item) #下一结点链接域不为空 ifself.is_empty(): self.__head=node node.next=node else: cur=self.__head whilecur.next!=self.__head: cur=cur.next #方式1: #node.next=cur.next #cur.next=node #方式2: cur.next=node node.next=self.__head definsert(self,pos,item): """ pos:pos从0开始 pre:指定节点前一节点      ,相当于游标 node:插入的指定节点 指定位置添加元素 """ #ifpos<=0头插法 ifpos<=0: self.add(item) #elifpos>(self.length()-1)尾插法 elifpos>(self.length()-1): self.append(item) #else插入法 else: pre=self.__head count=0 #当循环退出后             ,pre指向pos-1 whilecount<(pos-1): count+=1 pre=pre.next node=Node(item) node.next=pre.next pre.next=node defremove(self,item): """删除元素""" #考虑删除头部       、尾部            、中间节点 ifself.is_empty(): return cur=self.__head pre=None whilecur.next!=self.__head: ifcur.elem==item: #先判断是否是头节点 ifcur==self.__head: #找到尾节点 rear=self.__head whilerear.next!=self.__head: rear=rear.next self.__head=cur.next rear.next=self.__head else: #中间节点 pre.next=cur.next return else: pre=cur cur=cur.next #退出循环                   ,cur指向尾结点 ifcur.elem==item: ifcur==self.__head: #链表只有一个节点 self.__head=None else: pre.next=cur.next defsearch(self,item): """查找节点是否存在""" ifself.is_empty(): returnFalse #1.创建游标 cur=self.__head #2.遍历游标 whilecur.next!=self.__head: #3.cur.elem=item ifcur.elem==item: returnTrue else: cur=cur.next #对于最后一个元素或只有一个元素 ifcur.elem==item: returnTrue returnFalse if__name__==__main__: ll=SingleCircularLinkList() ll.is_empty() l1=ll.length() print(l1) ll.append(55) ll.is_empty() l2=ll.length() print(l2) ll.append(2) ll.add(8) ll.append(3) ll.append(4) ll.append(5) #5518234 ll.insert(-1,9)#98552182345 ll.insert(2,100)#98100552182345 ll.travel()

以上就是Python单向循环链表的创建      ,希望对大家有所帮助                  。更多Python学习指路:Python基础教程

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
phpcms任意文件上传(phpcms上传提示错误500怎么解决) mac如何修改时间日期(苹果Mac系统怎么设置时间?Mac时间与日期设置详细教程图文介绍)