建立乙個python鍊錶

2021-10-07 03:12:10 字數 1202 閱讀 4167

鍊錶是一種由一系列節點組成的資料結構, 每個節點都有指向下個節點的指標。這種結構就不需要連續的記憶體去儲存,但只要找到起始節點(頭節點),整個鍊錶的資料都可以被依次訪問。

在python3中,建立鍊錶的過程可以粗略分為定義單節點,定義空鍊錶,向空鍊錶填充資料幾個步驟

(來自定義單節點:

class node:

# constructor

def __init__(self, data, next=none):

self.data = data

self.next = next

這個節點node類的建構函式_init_決定了node可以接受外界輸入的資料data,並存在自身的data變數中。next變數則去儲存指向下乙個node的指標。

定義空鍊錶:

class linkedlist:

def __init__(self):

self.head = none

# insertion method for the linked list

def insert(self, data):

newnode = node(data)

if(self.head):

current = self.head

while(current.next):

current = current.next

current.next = newnode

else:

self.head = newnode

基本來說最基礎的鍊錶除建構函式外只需要乙個插入功能。這裡insert函式就承擔了這個功能。insert函式接收外界傳來的data,這個data會被用來定義乙個節點node。self.head則被稱為頭指標,正如函式裡的 if else 結構所示,當其為空時,insert會讓其指向第乙個被建立的節點 (else部分),而其不為空時,insert則可以通過它訪問當前節點的next變數。因為next指向下乙個節點,insert函式就可以通過while迴圈一直找到最末尾的,沒有指向下乙個節點的next, 然後讓其指向最新被建立的節點。這樣記憶體中原本孤立的新節點(newnode)就與鍊錶建立了聯絡

填充資料:

呼叫insert函式即可填充資料:

ll = linkedlist()

ll.insert(3)

建立乙個鍊錶

不知道為什麼總是忘了對鍊錶的操作,主要就是平時用的少,希望自己通過寫這編文章能加深對鍊錶操作的印象 目錄1.首先得要有兩個基本的標頭檔案 2.再然後得要有個結構體 3.這部分是函式前置宣告 4.鍊錶初始化 5.插入節點 6.列印整個鍊錶 7.釋放整個鍊錶的記憶體 8.整個程式示例 9.列印結果 in...

逆序建立乙個鍊錶

本題要求實現乙個函式,按輸入資料的逆序建立乙個鍊錶。函式介面定義 struct listnode createlist 函式createlist利用scanf從輸入中獲取一系列正整數,當讀到 1時表示輸入結束。按輸入資料的逆序建立乙個鍊錶,並返回煉表頭指標。鍊錶節點結構定義如下 struct lis...

python實現乙個鍊錶

class node object 創造結點類 def init self,val,next none self.val val self.next next class linklist object 鍊錶的操作 def init self self.head node none 鍊錶的開頭,創造...