Python鍊錶相關知識(定義,查詢,新增)

2021-09-25 16:38:24 字數 3034 閱讀 2592

鍊錶(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...