#初始化鍊錶的結點
class node():
def __init__(self,itedqhejm):
self.item = item
self.next = none
#傳入頭結點,獲取整個鍊錶的長度
def length(headnode):
if headnode == none:
return none
count = 0
currentnode =headnode
#嘗試了一下帶有環的鍊錶,計算長度是否會死迴圈,確實如此,故加上了count限制 = =||
while currentnode != none and count <=1000:
count+=1
currentnode = currentnode.next
return count
#獲取倒數第k個結點的值,傳入頭結點和k值
def findrknode(head,k):
if head == none:
return none
#如果長度小於倒數第k個值,則返回通知沒有這麼長
elif length(head)前進,當fastpr走到尾部,lowpr此處的值正好為倒數的k值
while fastpr !=none:
fastpr = fastpr.next
lowpr = low程式設計客棧pr.next
return lowpr
if __name__ == "__main__":
node1 = node(1)
node2 = node(2)
node3 = node(3)
node4 = node(4)
node5 = node(5)
node6 = node(6)
node7 = node(7)
node8 = node(8)
node9 = node(9)
node10 = node(10)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node6
node6.next = node7
node7.next = node8
node8.next = node9
node9.next = node10
print(findrknode(node1,5).item)
執行結果:
Python 實現單向鍊錶
鍊錶顧名思義就是 鏈 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的。跟陣列不同鍊錶不用預先定義大小,而且硬體支援的話可以無限擴充套件。陣列需要預先定義大小,無法適應資料動態地增減,資料小於定義的長度會浪費記憶體,...
Python 實現單向動態鍊錶
鍊錶顧名思義就是 鏈 鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元存放資料元素。鍊錶中每乙個元素成為 結點 每乙個結點都是由資料域和指標域組成的。跟陣列不同鍊錶不用預先定義大小,而且硬體支援的話可以無限擴充套件。陣列需要預先定義大小,無法適應資料動態地增減,資料小於定義的長度會浪費記憶體,...
Python的單向鍊錶實現
思路 鍊錶由節點組成,先規定節點 node 包含data和指向下個節點的next 初始化data當然就是傳入的data了,next指向none 新增分兩種情況 鍊錶為空,那麼頭節點和尾節點都指向新插入的節點 鍊錶不為空,那麼直接在尾部新增即可 遍歷因為只有鍊錶的尾節點的next是指向none的,所以...