国产探花免费观看_亚洲丰满少妇自慰呻吟_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實現合并兩個排序鏈表的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江都市| 西畴县| 常德市| 介休市| 南陵县| 黑河市| 平顺县| 化隆| 灵宝市| 乳山市| 彰化县| 长丰县| 新沂市| 肃宁县| 荆州市| 常宁市| 美姑县| 南溪县| 宁远县| 武城县| 卓资县| 西安市| 余干县| 奉贤区| 邓州市| 黄平县| 五莲县| 吐鲁番市| 苗栗县| 交城县| 赣榆县| 安化县| 宜丰县| 黄梅县| 内乡县| 四子王旗| 温州市| 资讯 | 宁国市| 彭泽县| 乌拉特后旗|