Python之雙向鍊錶

2021-10-06 21:45:50 字數 2089 閱讀 4333

雙向鍊錶是除頭和尾以外,頭指標指向前一節點,尾指標指向後一節點

python實現

#定義雙向鍊錶

class listnode():

def __init__(self,data):

self.head = none

self.data = data

self.next = none

#判斷是否為空

def isempty(self):

return self.data == none

#尾部插入元素

def nodes_tail(self,data):

if isempty(self):

self.data = data

else:

node = listnode(none)

node.data = data

p = self

while p.next is not none:

p = p.next

p.next = node

node.head = p

#首部插入元素

def nodes_head(self,data):

if isempty(self):

self.data = data

return self

else:

node = listnode(none)

node.data = data

node.next = self

self.head = node

return node

#在中間插入節點

def nodes_insert(self,data,num):

if isempty(self) and num == 1:

self.data = data

else:

node = listnode(none)

node.data = data

p = self

num = num-2

while num and p.next is not none:

print(num)

p = p.next

num = num - 1

node.next = p.next

node.head = p

p.next.head = node

p.next = node

#刪除中間節點元素

def nodes_remove(self,num):

if num == 1:

return false

else:

p = self

num = num - 1

while num and p.next is not none:

p = p.next

num -= 1

if num == 0:

p.next.head = p.head

p.head.next = p.next

return true

else:

return false

if __name__ == '__main__':

nodelist = listnode(none)

for i in range(5):

nodes_tail(nodelist,i)

nodelist = nodes_head(nodelist,10)

nodes_insert(nodelist,9,2)

nodes_remove(nodelist,2)

p = nodelist

#正序輸出

while true:

print(p.data)

if p.next == none:

break

else:

p = p.next

#逆序輸出

''' while true:

print(p.data)

if p.head == none:

break

else:

p = p.head

'''

鍊錶之雙向鍊錶

首先在說下單鏈表,才能和雙鏈表作比較 單鏈表 單向鍊錶 由兩部分組成 資料域 data 和結點域 node 單鏈表就像是一條打了很多結的繩子,每乙個繩結相當於乙個結點,每個節結點間都有繩子連線,這樣原理的實現是通過node結點區的頭指標head實現的,每個結點都有乙個指標,每個節點指標的指向都是指向...

LiteOS之雙向鍊錶

liteos中的雙向鍊錶和linux中的實現相差不大。一直很難理解為什麼liteos系統中會出現類似a.h,a.inc,a.ph的標頭檔案,為了避免採用相同字尾會出現重名。採用不同字尾而檔名相同的好處是啥呢?鍊錶結構定義 節點的結構定義 typedef struct los dl list los ...

mysql 雙向鍊錶 雙向鍊錶

雙向鍊錶是鍊錶變型,相比於單鏈表導航或者是向前和向後的兩種方式。以下是重要的術語來理解雙向鍊錶的概念 link 鍊錶的每個鏈路儲存資料稱為乙個元素。linkedlist linkedlist包含連線鏈結到名為首先第乙個鏈結,並稱為最後的最後乙個鏈結 last 雙向鍊錶表示 按照如上圖中所示,以下是要...