python實現單鏈表的反轉
阿新 • • 發佈:2018-09-15
翻轉 反轉 highlight 存在 -c convert link func ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/usr/bin/env python
#coding = utf-8
class Node:
def __init__( self ,data = None , next = None ):
self .data = data
self . next = next
def rev(link):
pre = link
cur = link. next
pre. next = None
while cur:
temp = cur. next
cur. next = pre
pre = cur
cur = temp
return pre
if __name__ = = ‘__main__‘ :
link = Node( 1 , Node( 2 , Node( 3 , Node( 4 , Node( 5 , Node( 6 , Node( 7 , Node( 8 , Node( 9 )))))))))
root = rev(link)
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做好了準備
轉自:https://www.cnblogs.com/xqn2017/p/8021666.html
python實現單鏈表的反轉