python實現乙個鍊錶

2021-10-08 08:21:07 字數 2315 閱讀 1458

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) # 鍊錶的開頭,創造乙個空結點

def init_list(self, data):

p = self.head # 可移動變數p

for i in data:

p.next = node(i)

p = p.next

def show(self):

p = self.head.next

while p is not none:

print(p.val, end=' ')

p = p.next

print()

p = self.head

while p.next is not none:

p = p.next

p.next = node(item)

def get_length(self): # 獲取鍊錶長度

n = 0 # 開始計數

p = self.head

while p.next is not none:

n += 1

p = p.next

return n

def is_empty(self): # 判斷鍊錶是否為空

if self.get_length() == 0:

return true

else:

return false

def clear(self): # 清空列表

self.head.next = none

def get_item(self, index): # 通過下標獲取值

p = self.head

i = 0

while i < index and p is not none:

i += 1

p = p.next

if p is none:

raise indexerror("list index out of range")

else:

return p.val

def insert(self, index, item):

if index < 0 or index > self.get_length() - 1:

raise indexerror("list index out of range")

p = self.head

i = 0

while i < index:

p = p.next

i += 1

node = node(item) # 建立新的結點

node.next = p.next # 插入新的結點

p.next = node

def delete_index(self, index): # 通過下標刪除結點

if index < 0 or index > self.get_length():

raise indexerror("list index out of range")

p = self.head

i = 0

while i < index:

p = p.next

i += 1

p.next = p.next.next

def delete_item(self, item): # 通過值刪除結點

p = self.head

while p.next is not none:

if p.next.val == item: # 如果值相等越過中間的值

p.next = p.next.next

break

else:

raise valueerror("x not in list")

if __name__ == '__main__':

link = linklist()

li = [1, 2, 3, 4, 5]

link.init_list(li)

link.show()

print(link.get_length())

link.delete_index(3)

link.show()

link.delete_index(3)

link.show()

建立乙個python鍊錶

鍊錶是一種由一系列節點組成的資料結構,每個節點都有指向下個節點的指標。這種結構就不需要連續的記憶體去儲存,但只要找到起始節點 頭節點 整個鍊錶的資料都可以被依次訪問。在python3中,建立鍊錶的過程可以粗略分為定義單節點,定義空鍊錶,向空鍊錶填充資料幾個步驟 來自定義單節點 class node ...

乙個雙向鍊錶的實現

本來是想改改算了,最後變成全部重寫。既然都是自己寫的,也算是原創吧!struct node node intval,node nextnode,node priornode data val next nextnode prior priornode node headnode new node n...

乙個鍊錶類的實現

乙個鍊錶類的實現 賦值到vc上即可執行除錯。typedef struct lnode lnode,plinklist 類的宣告 class linklist 類的實現 linklist linklist linklist linklist 初始化,分配乙個頭節點。bool linklist init...