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

