有序鍊錶合併

2021-08-08 09:18:11 字數 947 閱讀 3103

歸併排序:

la、lb是兩個帶頭結點的有序鍊錶,歸併兩個鍊錶得到新的有序表lc。設立指標pa,pb,pc,其中pa和pb分別指向la,lb中當前待比較的結點,pc指向lc表中當前最後乙個結點。將pa,pb結點中值較小的乙個鏈結到pc之後。

typedef struct node

node,*plink;

//銷毀鍊錶

void deletelink(plink& head)

}//列印鍊錶

void printlink(plink head,bool bdel=

false)

while(head)

cout<

}//合併鍊錶 帶頭結點

plink union_link_h(plink& la,plink& lb)

else

}pc->next = pa?pa:pb; //插入剩餘段

delete lb; //釋放lb的頭結點

lb =

null;

return r;

}int main()

else

}la->next =

null;

lb->next =

null;

printlink(la->next);//la: 1 3 5 7 9

printlink(lb->next);//lb: 2 4 6 8

lr = union_link_h(la,lb);

printlink(lr->next);

deletelink(lr);

return

0;}

執行結果:

鍊錶 合併有序鍊錶

題目 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 題解我們這裡利用到了乙個前哨節點,因為兩個鍊錶實際上是已經排好序了,所以我們只需要比較兩個節點誰大誰小,找到小的接上去,然後那個...

鍊錶 合併有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。leetcode21 class solution else head head.next head.next l1 null?l2 l1 return result.next class solut...

合併有序鍊錶

將兩個有序的鍊錶合併為乙個新鍊錶,要求新的鍊錶是通過拼接兩個鍊錶的節點來生成的,即不開闢新的記憶體空間 首先,為了方便操作鍊錶,我們定義乙個dummyhead,我們遍歷兩個鍊錶,直到其中有乙個到達尾部,則停下來 在遍歷的過程中,我們將元素值小的節點依次鏈在mergerlist的後邊,最後,我們看看哪...