1. 程式人生 > 程式設計 >python如何實現單鏈表的反轉

python如何實現單鏈表的反轉

這篇文章主要介紹了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做好了準備

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。