鍊錶(linked list)是資料結構中很重要的乙個部分,鍊錶是乙個最簡單的動態資料結構。
1.定義乙個鍊錶
class
intlist
:def
__init__
(self)
: self.first=
none
self.rest=
none
l1=intlist(
)l2=intlist(
)l3=intlist(
)l1.first=
1#首先,給每個鍊錶賦值
l2.first=
2l3.first=
3l1.rest=l2 #然後把每個鍊錶連線起來
l2.rest=l1
2.上面操作是不是太麻煩了呢,我們來看看下面的
class
intlist
:def
__init__
(self,f,r)
: self.first=f
self.rest=r
l=intlist(1,
none
)l=intlist(
2,l)
l=intlist(
3,l)
#注意,這樣鍊錶儲存的資料順序是反的!
3.我們怎麼知道這個鍊錶的長度呢?不妨定義乙個size()函式來測量一下它
鍊錶的遍歷(測量)
size()
def
size
(self)
: p=self
num=
0while p is
notnone
: num=num+
1 p=p.rest
return num
4.接下來查詢一下每個資料
鍊錶的查詢
get()
def
get(self,i)
: q=self
j=1while q is
notnone
and jq=q.rest
j=j+
1return q.first
5.定義鍊錶方式的改進
class
intnode
:def
__init__
(self,i,n)
: self.item=i
self.
next
=nclass
sllist
:def
__init__
(self,x)
: self.first=intnode(x,
none
)
6.新增元素的改進(表頭)
add_first
def
add_first
(self,x)
:#給鍊錶開頭位置新增元素
self.first = intnode(x,self.first)
7.新增元素的改進(表尾)#這樣你的順序就是正的
def
add_last
(self,x)
: p = self.first
while p.
next
isnot
none
: p = p.
next
p.next
= intnode(x,
none
)
8.查詢元素的改進
def
new_find
(self,x)
: j=
1 q=self.first
while jnext
isnot
none
: q=q.
next
print
(q.item)
9.上面一些**合起來
class
intnode
:def
__init__
(self,i,n)
: self.item=i
self.
next
=nclass
sllist
:def
__init__
(self,x)
: self.first=intnode(x,
none
)def
add_first
(self,x)
: self.first=intnode(x,self.first)
defnew_find
(self,x)
: j=
1 q=self.first
while jnext
isnot
none
: q=q.
next
print
(q.item)
defadd_last
(self,x)
: p = self.first
while p.
next
isnot
none
: p = p.
next
p.next
= intnode(x,
none
)l=sllist(1)
l.add_first(2)
l.add_first(3)
l.new_find(1)
l.add_last(8)
l.new_find(
4)
鍊錶相關知識點
迴圈鍊錶和單鏈表的區別在於尾節點,單鏈表的尾節點指向空位址。迴圈鍊錶比較適合處理環形結構的資料。雙向鍊錶 需要兩個空間來儲存後繼結點和前驅結點的位址。如果儲存相同多的資料,雙向鍊錶比單鏈表占用更多的記憶體空間。思路 維護乙個有序單鏈表,靠近鍊錶尾部的節點是越早之前訪問的。當有乙個新資料被訪問時,我們...
鍊錶相關知識點
示例程式 include include include 普通結構體 typedef struct stu 結點結構體 typedef struct node int main 執行結果 指標變數佔4個位元組!32位系統中 指標變數根據 基型別 的不同有 int 型,float 型,double 型...
鍊錶相關程式設計題 Python
從尾到頭列印鍊錶 鍊錶中倒數第k個結點 class solution def findkthtotail self,head,k write code here if not head return none pfast,pslow head,head for i in range k if pfa...