国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對python實現合并兩個排序鏈表的方法詳解

2020-02-16 00:50:47
字體:
來源:轉載
供稿:網友

輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,當然我們需要合成后的鏈表滿足單調不減規則。

1、迭代方法

  def Merge(self, pHead1, pHead2):    p1, p2 = pHead1, pHead2    if p1 and p2:      if p1.val < p2.val:        head = p1        p1 = p1.next      else:        head = p2        p2 = p2.next      cur = head    elif p1:      return p1    else:      return p2    while p1 and p2:      if p1.val < p2.val:        cur.next = p1        p1 = p1.next      else:        cur.next = p2        p2 = p2.next      cur = cur.next    if p1:      cur.next = p1    else:      cur.next = p2    return head

2、遞歸方法

  def Merge_rcv(self, pHead1, pHead2):    if not pHead1:      return pHead2    if not pHead2:      return pHead1    if pHead1.val < pHead2.val:      pres = pHead1      pres.next = self.Merge(pHead1.next, pHead2)    else:      pres = pHead2      pres.next = self.Merge(pHead1, pHead2.next)    return pres

附注:

遞歸算法運行邏輯看著復雜,但是形式上都是簡單的.每一層都表達了”當前結點要做的任務”.

思考遞歸算法的步驟應該是

1) 明確每一層要做的任務,eg,選擇鏈表中較小值作為當前結點

2) 明確每一層的任務的完結點和遞歸連接點,eg,在pres.next處進行下一層遞歸

3) 明確return條件,eg,當p1,p2其中有一個為空時,遞歸任務結束

幾乎所有的遞歸算法都可以沿著這三個要求思考構造,很自然不怕寫遞歸算法,三個問題能自己在腦里回答出來,稍加修飾就是一個完整的遞歸算法.

這也是函數式編程的魅力所在.

以上這篇對python實現合并兩個排序鏈表的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会昌县| 合山市| 越西县| 大安市| 玉龙| 上犹县| 临西县| 永仁县| 石棉县| 滁州市| 肇源县| 安多县| 蛟河市| 峨眉山市| 阳泉市| 阳东县| 柳河县| 南京市| 兴业县| 镇康县| 晴隆县| 嘉善县| 洪泽县| 中西区| 肃南| 通辽市| 行唐县| 夏邑县| 三河市| 阆中市| 公主岭市| 固阳县| 宁阳县| 库尔勒市| 京山县| 揭西县| 海淀区| 横山县| 祁门县| 福安市| 湟中县|