1. 程式人生 > >Python連結串列最新增刪改查及倒序

Python連結串列最新增刪改查及倒序

Python連結串列最新增刪改查及倒序

連結串列(linked list)是由一組被稱為結點的資料元素組成的資料結構,每個結點都包含結點本身的資訊和指向下一個結點的地址。
閒話不多說,直接上程式碼。

class Node():
def init(self,num,next=None):
self.num=num
self.next=next
class LinkList():
def init(self):
self.head=None
def produce(self):
wei=None
for i in range(10):
one=Node(i)
if self.headNone:
self.head=one
wei =one
else:
wei.next=one
wei=one
def dayin(self):
p=self.head
while p!=None:
print(p.num)
p=p.next
def charu(self):
wz=int(input(“請輸入插入位置:”))
data=int(input(“請輸入插入的值:”))
if wz

1:
one=Node(data)
one.next=self.head
self.head=one
else:
i=1
p=self.head
while i<wz-1 and p!=None:
p=p.next
i+=1
if pNone:
print(“位置異常”)
else:
one=Node(data)
one.next=p.next
p.next=one
def shanchu(self):
if self.head
None:
print(“空了,別刪了”)
else:
wz=int(input(“請輸入要刪除的位置”))
if wz1:
print(“你刪除掉的是第一個節點,”,self.head.num)
self.head=self.head.next
else:
i=1
p=self.head
while i <wz-1 and p!=None:
i+=1
p=p.next
if p
None:
print(“位置有誤”)
else:
print(“刪除的位置是”,p.next.num)
p.next=p.next.next
def reverse(self):
if self.headNone or self.head.nextNone:
print(“不用倒了”)
else:
current=self.head
pre =None
nextNode =self.head.next
while nextNode!=None:
current.next=pre
pre = current
current=nextNode
nextNode=nextNode.next
current.next=pre
self.head=current

lb=LinkList()
lb.produce()
##lb.dayin()
while True:
bh=int(input(“請輸入編號:”))
if bh1:
lb.charu()
elif bh
2:
lb.shanchu()
elif bh3:
lb.dayin()
elif bh
4:
lb.reverse()
else:
break

看完程式碼。看不懂的才是真的需要的。為了方便只要程式碼的,講解就放後面吧。
難理解的是倒序的問題。
連結串列倒序圖片

原連結串列1->2->3->4->5
倒序後RT所示
如果頭等於空 或者頭的下一個為空,則已經倒完。
if self.headNone or self.head.nextNone
因為連結串列總是多指向下一個位置。這個不難理解

定義一個current,current(現在的位置)
        current=self.head
        pre =None
        nextNode   =self.head.next
        
        while nextNode!=None:
            current.next=pre
            pre  = current
            current=nextNode
            nextNode=nextNode.next
        current.next=pre
        self.head=current

還沒有看懂麼,那來看下面
class Node():
def init(self,num,next=None):
self.num=num
self.next=next
a=Node(1)
b=Node(2)
c=Node(3)
a.next=b
b.next=c
p=a
print(p.num)
p=p.next
print(p.num)
p=p.next
print(p.num)
p=p.next
print§
這個很基礎了
while p!=None:
print(p.num,end=’ ')
p=p.next

class Node():
def init(self,num,next=None):
self.num=num
self.next=next
a=Node(1)
b=Node(2)
c=Node(3)
a.next=b
b.next=c
d=Node(4)
a.next.next.next=d
print(a.next.next.next.num)
print(c.next.num)

沒了= =