91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中如何用遞歸與迭代方法實現鏈表反轉

發布時間:2022-02-21 14:43:44 來源:億速云 閱讀:189 作者:iii 欄目:開發技術

這篇文章主要講解了“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中如何用遞歸與迭代方法實現鏈表反轉”的內容了,經過本文的學習后,相信大家對python中如何用遞歸與迭代方法實現鏈表反轉這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台北市| 巴楚县| 多伦县| 柳江县| 白玉县| 宝应县| 深水埗区| 衡东县| 封丘县| 正定县| 镇康县| 定西市| 河北省| 舞钢市| 康平县| 崇信县| 安远县| 炉霍县| 武清区| 苗栗县| 拉孜县| 定结县| 商河县| 江安县| 仙游县| 池州市| 平定县| 黄骅市| 错那县| 青岛市| 图片| 张掖市| 渑池县| 乌海市| 白水县| 马山县| 革吉县| 镇平县| 百色市| 精河县| 鄂托克前旗|