日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

合并两个排序的链表递归和非递归C++实现

發布時間:2023/12/2 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 合并两个排序的链表递归和非递归C++实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述:

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

1、分析

已知輸入的兩個鏈表遞增有序,要使輸出的鏈表依然遞增有序,可以依次從輸入的兩個鏈表中挑選最小的元素插入到輸出的鏈表尾部,便可實現輸出鏈表遞增有序。?

2、數據結構定義

struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {} };

3、遞歸實現

/*遞歸實現合并兩個排序鏈表*/ ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {if(pHead1 == NULL)return pHead2;if(pHead2 == NULL)return pHead1;if(pHead1->val < pHead2->val){pHead1->next = Merge(pHead1->next, pHead2);return pHead1;}else{pHead2->next = Merge(pHead1, pHead2->next);return pHead2;} }

4、非遞歸實現:

/*非遞歸實現合并兩個排序鏈表*/ ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {ListNode *pHead = new ListNode(0);ListNode *p = pHead;while(pHead1 != NULL && pHead2 != NULL){if(pHead1->val < pHead2->val){p->next = pHead1;pHead1 = pHead1->next;}else{p->next = pHead2;pHead2 = pHead2->next;}p = p->next;}if(pHead1 != NULL){p->next = pHead1;}if(pHead2 != NULL){p->next = pHead2;}return pHead->next; }

5、總結

這道題使對單鏈表操作比較經典的題目,無論是考研還是面試出現的概率都非常高。題目的思路較為簡單,編碼實現稍微難點,難度雖不大,但能考察編碼基礎功力和對單鏈表的深一層的理解,所以須熟練掌握。

?

轉載于:https://www.cnblogs.com/evenleee/p/8505981.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的合并两个排序的链表递归和非递归C++实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。