您好,登錄后才能下訂單哦!
這篇文章主要講解了“python中如何用遞歸與迭代方法實現鏈表反轉”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python中如何用遞歸與迭代方法實現鏈表反轉”吧!
定義鏈表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.明確函數功能,該函數可以將鏈表反轉,并返回一個頭節點
2.結束條件:當鏈表為空或只有一個節點時返回
if head==None or head.next==None: return head
3.等價條件(縮小范圍),對于數組來講,縮小范圍是n——>n-1,對于鏈表來講則可以考慮head
——
>head.next reverse = reverse_list(head.next) #假設reverse是head以后的、已經反轉過的鏈表
接下來要做的是將head節點接到已經反轉過的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)
正序打印:
print('原始list:') print_list(head) print('\n')
反轉后打印:
revere = reverse_list(head) print('反轉一次的list:') print_list(revere) print('\n')
反轉2:
print('head is') print_list(head) #發現此時head節點變成了最后一個節點,說明函數是對head這個實例直接作用的 print('\n') # print('revere is') # print_list(revere) # print('\n') print('反轉兩次的list:') print_list(reverse_list2(revere))
感謝各位的閱讀,以上就是“python中如何用遞歸與迭代方法實現鏈表反轉”的內容了,經過本文的學習后,相信大家對python中如何用遞歸與迭代方法實現鏈表反轉這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。