python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn)
這篇文章主要介紹了python如何實(shí)現(xiàn)單鏈表的反轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
代碼如下
# 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函數(shù)的實(shí)現(xiàn)過程:
line 9-11是將原鏈表的第一個(gè)節(jié)點(diǎn)變成了新鏈表的最后一個(gè)節(jié)點(diǎn),同時(shí)將原鏈表的第二個(gè)節(jié)點(diǎn)保存在cur中
line13-16就是從原鏈表的第二個(gè)節(jié)點(diǎn)開始遍歷到最后一個(gè)節(jié)點(diǎn),將所有節(jié)點(diǎn)翻轉(zhuǎn)一遍
以翻轉(zhuǎn)第二個(gè)節(jié)點(diǎn)為例
temp = cur.next是將cur的下一個(gè)節(jié)點(diǎn)保存在temp中,也就是第節(jié)點(diǎn)3,因?yàn)榉D(zhuǎn)后,節(jié)點(diǎn)2的下一個(gè)節(jié)點(diǎn)變成了節(jié)點(diǎn)1,原先節(jié)點(diǎn)2和節(jié)點(diǎn)3之間的連接斷開,通過節(jié)點(diǎn)2就找不到節(jié)點(diǎn)3了,因此需要保存
cur.next = pre就是將節(jié)點(diǎn)2的下一個(gè)節(jié)點(diǎn)指向了節(jié)點(diǎn)1
然后pre向后移動(dòng)到原先cur的位置,cur也向后移動(dòng)一個(gè)節(jié)點(diǎn),也就是pre = cur ,cur =temp
這就為翻轉(zhuǎn)節(jié)點(diǎn)3做好了準(zhǔn)備
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之實(shí)現(xiàn)線性表的順序
- python數(shù)據(jù)結(jié)構(gòu)之線性表的順序存儲結(jié)構(gòu)
- python實(shí)現(xiàn)單鏈表的方法示例
- Python單鏈表原理與實(shí)現(xiàn)方法詳解
- Python棧的實(shí)現(xiàn)方法示例【列表、單鏈表】
- Python實(shí)現(xiàn)棧的方法詳解【基于數(shù)組和單鏈表兩種方法】
- python實(shí)現(xiàn)從尾到頭打印單鏈表操作示例
- 用python介紹4種常用的單鏈表翻轉(zhuǎn)的方法小結(jié)
- python版單鏈表反轉(zhuǎn)
- Python線性表種的單鏈表詳解
相關(guān)文章
python程序中調(diào)用其他程序的實(shí)現(xiàn)
本文主要介紹了python程序中調(diào)用其他程序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Django中如何防范CSRF跨站點(diǎn)請求偽造攻擊的實(shí)現(xiàn)
這篇文章主要介紹了Django中如何防范CSRF跨站點(diǎn)請求偽造攻擊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Django用戶注冊并自動(dòng)關(guān)聯(lián)到某數(shù)據(jù)表?xiàng)l目的實(shí)現(xiàn)步驟
當(dāng)一個(gè)新用戶注冊并且你想要自動(dòng)關(guān)聯(lián)到特定的Box條目(假設(shè)其ID為1)時(shí),下面給大家分享完整實(shí)現(xiàn)流程和步驟,對Django關(guān)聯(lián)數(shù)據(jù)表?xiàng)l目實(shí)現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧2017-04-04關(guān)于你不想知道的所有Python3 unicode特性
我的讀者知道我是一個(gè)喜歡痛罵Python3 unicode的人。這次也不例外。我將會告訴你用unicode有多痛苦和為什么我不能閉嘴。我花了兩周時(shí)間研究Python3,我需要發(fā)泄我的失望。在這些責(zé)罵中,仍然有有用的信息,因?yàn)樗涛覀內(nèi)绾蝸硖幚鞵ython3。如果沒有被我煩到,就讀一讀吧2014-11-11