python遞歸&迭代方法實現(xiàn)鏈表反轉
定義鏈表node結構:
class ListNode: ? ? ? def __init__(self,data): ? ? ? ? self.data = data ? ? ? ? self.next = None
將L轉化為鏈表:
def make_list(L):
將L初始化為鏈表:
? head = ListNode(L[0]) ? ? cur = head ? ? for i in L[1:]: ? ? ? ? cur.next = ListNode(i) ? ? ? ? cur = cur.next ? ? return head ?
遍歷鏈表:
def print_list(head): ? ? ? cur = head ? ? while cur != None: ? ? ? ? print(cur.data,end=' ') ? ? ? ? cur = cur.next ?
遞歸法 反轉鏈表:
def reverse_list(head):
三要素:
- 1.明確函數(shù)功能,該函數(shù)可以將鏈表反轉,并返回一個頭節(jié)點
- 2.結束條件:當鏈表為空或只有一個節(jié)點時返回
? ? if head==None or head.next==None: ? ? ? ? return head
- 3.等價條件(縮小范圍),對于數(shù)組來講,縮小范圍是n——>n-1,對于鏈表來講則可以考慮
head
——
>head.next ? ? reverse = reverse_list(head.next) ?#假設reverse是head以后的、已經反轉過的鏈表
接下來要做的是將head節(jié)點接到已經反轉過的reverse上:
? ? tmp = head.next ? ? tmp.next = head ? ? head.next = None ?return reverse ?#返回新的列表
迭代法:
def reverse_list2(head): ? ? #print_list(head) ? ? cur = head ? ? pre = None ? ? while cur: ? ? ? ? tmp = cur.next ? ? ? ? cur.next = pre ? ? ? ? pre = cur ? ? ? ? cur = tmp ? ? head = pre ? ? return head ? if __name__ == '__main__': ? ? ? L = [3,2,7,8] ? ? head = make_list(L) ?
正序打?。?/strong>
? ? print('原始list:') ? ? print_list(head) ? ? print('\n') ?
反轉后打?。?/strong>
? ? revere = reverse_list(head) ? ? print('反轉一次的list:') ? ? print_list(revere) ? ? print('\n') ?
反轉2:
? ? print('head is') ? ? print_list(head) ?#發(fā)現(xiàn)此時head節(jié)點變成了最后一個節(jié)點,說明函數(shù)是對head這個實例直接作用的 ? ? print('\n') ? ? ? # print('revere is') ? ? # print_list(revere) ? ? # print('\n') ? ? ? print('反轉兩次的list:') ? ? print_list(reverse_list2(revere))
到此這篇關于python遞歸&迭代方法實現(xiàn)鏈表反轉的文章就介紹到這了,更多相關python鏈表反轉內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python數(shù)據類型bytes?和?bytearray的使用與區(qū)別
本文主要介紹了python數(shù)據類型bytes?和?bytearray的使用與區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02python隨機模塊random的22種函數(shù)(小結)
這篇文章主要介紹了python隨機模塊random的22種函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05Django JWT Token RestfulAPI用戶認證詳解
這篇文章主要介紹了Django JWT Token RestfulAPI用戶認證詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01Python使用numpy模塊創(chuàng)建數(shù)組操作示例
這篇文章主要介紹了Python使用numpy模塊創(chuàng)建數(shù)組操作,結合實例形式分析了Python使用numpy模塊實現(xiàn)數(shù)組的創(chuàng)建、賦值、修改、打印等相關操作技巧與注意事項,需要的朋友可以參考下2018-06-06