python遞歸實現(xiàn)鏈表快速倒轉(zhuǎn)
更新時間:2022年05月04日 10:23:17 作者:鵬鵬寫代碼
這篇文章主要為大家詳細(xì)介紹了python遞歸實現(xiàn)鏈表快速倒轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python遞歸實現(xiàn)鏈表快速倒轉(zhuǎn)的具體代碼,供大家參考,具體內(nèi)容如下
案例:實現(xiàn)如下鏈表進(jìn)行倒轉(zhuǎn)
源代碼:
''' Node 用于表示隊列中的節(jié)點;它包含兩個域。 val 表示節(jié)點的值。 next指向下一個節(jié)點 ''' #定義鏈表的數(shù)據(jù)結(jié)構(gòu) class Node: ? ? def __init__(self,val): ? ? ? ? self.next = None ? ? ? ? self.val ?= val class ListUtility:#生成一個用來操作的鏈表 ? ? def __init__(self): ? ? ? ? self.head = None ? ? ? ? self.tail = None ? ? ? ? pass ? ? def createList(self,nodeNum): ? ? ? ? if nodeNum <= 0: ? ? ? ? ? ? return None ? ? ? ? head = None ? ? ? ? val = 0 ? ? ? ? node = None ? ? ? ? while nodeNum > 0: ? ? #如果head指針為空,代碼先構(gòu)造隊列頭部,如果不為空,代碼構(gòu)造節(jié)點對象,然后用上一個節(jié)點的next指針指向當(dāng)前節(jié)點,從而將多個節(jié)點串聯(lián)成隊列。 ? ? ? ? ? ? if head is None: ? ? ? ? ? ? ? ? head = Node(val) ? ? ? ? ? ? ? ? node = head ? ? ? ? ? ? else: ? ? ? ? ? ? ? ? node.next = Node(val) ? ? ? ? ? ? ? ? node = node.next ? ? ? ? ? ? ? ? self.tail = node ? ? ? ? ? ? val += 1 ? ? ? ? ? ? nodeNum -= 1 ? ? ? ?? ? ? ? ? self.head = head ? ? ? ? return head ? ?? ? ? def printList(self,head): ? ? ? ?? ? ? ? ? while head is not None: ? ? ? ? ? ? print("{0}->".format(head.val),end = " ") ? ? ? ? ? ? head = head.next ? ? ? ? print("null") ? ? ? ? ? ? ? ?? class ListReverse: ? ? def __init__(self, head): ? ? ? ? self.listHead = head ? ? ? ? self.newHead = None ? ? def recursiveReverse(self, node): ? ? ? ? #如果隊列為空或者只有一個節(jié)點,那么隊列已經(jīng)倒轉(zhuǎn)完成 ? ? ? ? if node is None or node.next is None: ? ? ? ? ? ? self.newHead = node ? ? ? ? ? ? return node ? ? ? ? ''' ? ? ? ? 如果隊列包含多個節(jié)點,那么通過遞歸調(diào)用的方式,先把當(dāng)前節(jié)點之后所有節(jié)點實現(xiàn)倒轉(zhuǎn), ? ? ? ? 然后再把當(dāng)前節(jié)點之后節(jié)點的next指針指向自己從而完成整個列表所有節(jié)點的導(dǎo)致 ? ? ? ? ''' ? ? ? ? head = self.recursiveReverse(node.next) ? ? ? ? head.next = node ? ? ? ? node.next = None ? ? ? ? return node ? ? def getReverseList(self): ? ? ? ? ''' ? ? ? ? listHead是原隊列頭節(jié)點,執(zhí)行recursiveReverse后newHead指向新列表的頭結(jié)點,它 ? ? ? ? 對應(yīng)的其實是原列表的尾節(jié)點,而head指向新列表的尾節(jié)點 ? ? ? ? ''' ? ? ? ? self.recursiveReverse(self.listHead) ? ? ? ? return self.newHead ?utility = ListUtility() head = utility.createList(10) utility.printList(head) #執(zhí)行倒轉(zhuǎn)算法,然后再次打印隊列,前后對比看看導(dǎo)致是否成功 reverse = ListReverse(head) utility.printList(reverse.getReverseList()) ??
運(yùn)行結(jié)果:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- python算法題 鏈表反轉(zhuǎn)詳解
- Python數(shù)據(jù)結(jié)構(gòu)之翻轉(zhuǎn)鏈表
- 單鏈表反轉(zhuǎn)python實現(xiàn)代碼示例
- Python二叉搜索樹與雙向鏈表轉(zhuǎn)換實現(xiàn)方法
- Python實現(xiàn)鏈表反轉(zhuǎn)的方法分析【迭代法與遞歸法】
- python實現(xiàn)反轉(zhuǎn)部分單向鏈表
- Python3實現(xiàn)的反轉(zhuǎn)單鏈表算法示例
- Python 數(shù)據(jù)結(jié)構(gòu)之旋轉(zhuǎn)鏈表
- Python二叉搜索樹與雙向鏈表轉(zhuǎn)換算法示例
- python如何實現(xiàn)單鏈表的反轉(zhuǎn)
相關(guān)文章
python語法之語言元素和分支循環(huán)結(jié)構(gòu)詳解
這篇文章主要介紹了Python的語言元素和分支循環(huán)結(jié)構(gòu),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2021-10-10Python利用matplotlib實現(xiàn)制作動態(tài)條形圖
說到用 Python 制作動態(tài)圖,首先想到的肯定是一些直接拿來就用的庫,雖然我沒做過,但是我相信一定有且不止一個,搜了一圈后發(fā)現(xiàn)有個bar chart race庫看起來不錯,感興趣的可以跟隨小編一起學(xué)習(xí)一下2022-10-10opencv-python 讀取圖像并轉(zhuǎn)換顏色空間實例
今天小編就為大家分享一篇opencv-python 讀取圖像并轉(zhuǎn)換顏色空間實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12