鍊錶是一種非連續性的資料結構,資料元素的邏輯順序是按照鍊錶的指標實現,所以鍊錶由一系列的節點組成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。
classnode():
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+1)
if self.head==none:#
如果是空的,那麼此節點就是頭,頭尾都指向此節點
self.head=one
wei=one
else
: wei.next=one#
把新節點放在尾節點後面。
wei=one #
此節點變成尾節點
def dayin(self):#
列印鍊錶
p=self.head
while p!=none:
(p.num)
p=p.next
def charu(self):#
鍊錶插入
wz=int(input("
請輸入插入位置:"))
data= int(input("
請輸入插入的值:"))
if wz==1:#
如果插入的位置是1
one=node(data)
one.next=self.head
self.head=one
else
: i=1p=self.head
while iand p!=none:#
查詢 要插入位置的前乙個元素
p=p.next
i+=1
if p==none:#
如果鍊錶長度沒有要插入的位置
print("
位置異常")
else
: one=node(data)
one.next=p.next #
p.next=one #
在將此節點鏈結到前一節點的後面
defshanchu(self):
if self.head==none:
print("
別刪除了,空空如也")
else
: wz=int(input("
請輸入要刪除的位置"))
if wz==1:#
刪除的如果是頭結點
print("
您刪除的是第乙個節點,內容是
",self.head.num)
self.head=self.head.next
else
: i=1p=self.head
while iand p!=none:#
查詢刪除元素的前乙個位置
i+=1p=p.next
if p==none or p.next==none:#
如果當前節點是空或者下乙個節點也就是要刪除節點是空。
print("
位置有誤")
else
:
print("
刪除的內容是
",p.next.num)
p.next=p.next.next
def reverse(self):#
鍊錶翻轉
if self.head==none or self.head.next==none:
print("
不用到了")
else
: current=self.head #
前驅節點
pre = none#
當前節點
nextnode = self.head.next#
下乙個節點
while nextnode !=none :#
當前節點為尾節點的時候迴圈退出,此時nextnode為空
current.next=pre#
當前節點連線到前節點
pre = current#
前乙個節點後移
current =nextnode#
當前節點後移
nextnode = nextnode.next#
下乙個節點後移
current.next = pre#
最後乙個節點翻轉
self.head=current
lb=linklist()
lb.produce()
while
true:
bh=int(input("
請輸入編號:"))
if bh==1: #
鍊錶插入
lb.charu()
elif bh==2:#
鍊錶刪除
lb.shanchu()
elif bh==3:#
鍊錶列印
lb.dayin()
elif bh==4:
lb.reverse()
else
:
break
Python 基本資料結構
列表是python裡的內建的型別之一,可以新增和刪除其中的元素。如 role sam 33 dean 37 可以列表中包含列表,同一列表中包含不同型別的資料。下面介紹列表的一些通用操作,關於list的其他用法,可以通過help list 檢視。a 2,13,12,41,17,23 a 1 列表從0開...
python 基本資料結構
1.切片 sname start?step sname 為序列名稱 start 不指定 預設為0 包含 end 不包含 step 不指定 預設為1 2.序列可以通過 相加 song1 a,b song2 c,d print song1 song2 3.序列相乘 song1 a print song1...
python中基本資料結構(四)
二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹的建立 建立二叉樹節點 class treenode object 初始化節點 def init self,data,left node none,right no...