將兩個有序鍊錶合併,合併後仍然有序

2022-08-30 17:57:12 字數 583 閱讀 6022

思路:因為a,b鍊錶中元素遞增有序,要使歸併後的c也遞增有序,可以每次從a、b中挑出最小的元素插入c的尾部,這樣迴圈插入完成後,c也一定是遞增有序的。

需要注意的點是,a、b中的元素有可能乙個已經全部被插入到c中,而另乙個還沒插完。

1

struct

lnode56

void merge(lnode *a,lnode *b,lnode *&c)

7else27}

2829

if(p!=null) r->next =p;

30if(q!=null) r->next =q;

31 }

如果題這樣改:a、b遞增有序,合併成c後,c遞減有序,怎麼做?    前面題用的是尾插法插入元素,如果使用頭插法插入元素,就可以得到乙個遞減序列。

1

struct

lnode56

void merge(lnode *a,lnode *b,lnode *&c)

7else27}

28while(p!=null)

34while(q!=null)

40 }

合併兩個有序鍊錶,合併後依然有序

合併兩個有序鍊錶,合併後依舊有序 當第乙個鍊錶是空鍊錶就把它和第二個鍊錶合併,結果是第二個鍊錶 同樣,第二個鍊錶是空表,合 並結果是第乙個鍊錶 如果兩都是空鍊錶,合併結果也是空鍊錶 比較兩個鍊錶的頭結點,小的作為合併後的頭結點,在剩餘節點中,再次比較兩個鍊錶的頭結點 node mergelist n...

合併兩個有序鍊錶,合併後依然有序

合併兩個有序鍊錶合併之後還是有序的,首先這兩個鍊錶是需要是有序的,也就是說這兩個鍊錶已經排好序了,才能進行合併。但是昨天也寫過氣泡排序的程式了,如果讓你合併兩個不是有序的鍊錶合併之後有序,那可以先將兩個鍊錶進行氣泡排序再進行合併就可以了。首先明確思路,合併兩個鍊錶有兩種方式,第一種就是建立乙個新的鍊...

合併兩個有序鍊錶,合併後依然有序

問題描述 合併兩個有序鍊錶,合併後依然有序 實現思路 先比較兩個有序鍊錶的頭結點,將值最小的頭結點作為新鍊錶的頭結點,設定兩個新的指標,分別遍歷兩個鍊錶,將值較小的結點尾插到新的鍊錶中 具體 實現如下 typedef int datatype typedef struct slistnodeslis...