Python實現(xiàn)單鏈表中元素的反轉
給定一個單鏈表,將其反轉。其實很容易想到,只需要修改每個結點的指針指向:即令后一個結點指向前一個結點,并且將表頭指針指向最后一個結點即可。
這個過程可以用循環(huán)實現(xiàn),也可以用遞歸來實現(xiàn)。
1、用循環(huán)來實現(xiàn):
class LNode: ? ? def __init__(self, elem): ? ? ? ? self.elem = elem ? ? ? ? self.pnext = None ? def reverse(head): ? ? if head is None or head.pnext is None: #如果輸入的鏈表是空或者只有一個結點,直接返回當前結點 ? ? ? ? return head ? ? pre = None #用來指向上一個結點 ? ? cur = newhead = head #cur是當前的結點。newhead指向當前新的頭結點 ? ? while cur: ? ? ? ? newhead = cur ? ? ? ? temp = cur.pnext ? ? ? ? cur.pnext = pre #將當前的結點的指針指向前一個結點 ? ? ? ? pre = cur ? ? ? ? cur = temp ? ? return newhead ? if __name__=="__main__": ? ? head = LNode(1) ? ? p1 = LNode(2) ? ? p2 = LNode(3) ? ? head.pnext = p1 ? ? p1.pnext = p2 ? ? p = reverse(head) ? ? while p: ? ? ? ? print(p.elem) ? ? ? ? p = p.pnext
2、用遞歸來實現(xiàn):
class LNode: ? ? def __init__(self, elem): ? ? ? ? self.elem = elem ? ? ? ? self.pnext = None ? def reverse(head): ? ? if not head or not head.pnext: ? ? ? ? return head ? ? else: ? ? ? ? newhead = reverse(head.pnext) ? ? ? ? head.pnext.pnext = head #令下一個結點的指針指向當前結點 ? ? ? ? head.pnext = None #斷開當前結點與下一個結點之間的指針指向聯(lián)系,令其指向空 ? ? ? ? return newhead ? ? if __name__=="__main__": ? ? head = LNode(1) ? ? p1 = LNode(2) ? ? p2 = LNode(3) ? ? head.pnext = p1 ? ? p1.pnext = p2 ? ? p = reverse(head) ? ? while p: ? ? ? ? print(p.elem) ? ? ? ? p = p.pnext
以下是圖解遞歸的詳細過程:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
狀態(tài)機的概念和在Python下使用狀態(tài)機的教程
這篇文章主要介紹了狀態(tài)機的概念和在Python下使用狀態(tài)機的教程,本文來自于IBM官方開發(fā)者技術文檔,需要的朋友可以參考下2015-04-04Pytorch抽取網(wǎng)絡層的Feature Map(Vgg)實例
今天小編就為大家分享一篇Pytorch抽取網(wǎng)絡層的Feature Map(Vgg)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python Selenium破解滑塊驗證碼最新版(GEETEST95%以上通過率)
這篇文章主要介紹了Python Selenium破解滑塊驗證碼最新版(GEETEST95%以上通過率),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01python實現(xiàn)讀取Excel內(nèi)容并展示成json
這篇文章主要為大家詳細介紹了如何使用python實現(xiàn)讀取Excel內(nèi)容并展示成json功能,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下2023-12-12