python如何實現單鏈表的反轉
阿新 • • 發佈:2020-02-10
這篇文章主要介紹了python如何實現單鏈表的反轉,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
程式碼如下
# coding=utf-8 class Node: def __init__(self,data=None,next=None): self.data = data self.next = next def Reserver(link): pre = link cur = link.next pre.next = None while cur: tmp = cur.next cur.next = pre pre = cur cur = tmp return pre if __name__ == "__main__": node = Node(1,Node(2,Node(3,Node(4,Node(5,Node(6,Node(7,Node(8,Node(9))))))))) root = Reserver(node) while root: print root.data,root = root.next
解釋一下rev函式的實現過程:
line 9-11是將原連結串列的第一個節點變成了新連結串列的最後一個節點,同時將原連結串列的第二個節點儲存在cur中
line13-16就是從原連結串列的第二個節點開始遍歷到最後一個節點,將所有節點翻轉一遍
以翻轉第二個節點為例
temp = cur.next是將cur的下一個節點儲存在temp中,也就是第節點3,因為翻轉後,節點2的下一個節點變成了節點1,原先節點2和節點3之間的連線斷開,通過節點2就找不到節點3了,因此需要儲存
cur.next = pre就是將節點2的下一個節點指向了節點1
然後pre向後移動到原先cur的位置,cur也向後移動一個節點,也就是pre = cur,cur =temp
這就為翻轉節點3做好了準備
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。