合併兩個有序鍊錶,合併後依然有序 三種方法

2021-08-25 22:29:09 字數 998 閱讀 2401

1.合併鍊錶p1,p2到p1上

void combinelist(listnode** p1,listnode* p2)//合併鍊錶p1,p2 到p1

if (p2 ==

null)

listnode* cur1 =

null;

listnode* pre1 =

null;

listnode* cur2 =

null;

listnode* pre2 =

null;

listnode* now =

null;

cur1 =

*p1;

pre1 = cur1;

cur2 = p2;

if (cur2->

data

<= cur1->

data)//從小到大排序

else

while (pre1&&cur2)

else

}if (pre1 ==

null)

}

2.合併兩個鍊錶,,生成第三個鍊錶 非遞迴
listnode* newcombinelist(listnode* p1, listnode* p2)//合併兩個鍊錶,,生成第三個鍊錶  非遞迴

else

while (p1&&p2)

else

}if (p1 ==

null)

p3 = p2;

if (p2 ==

null)

p3 = p1;

return pnewlist;

}

3.合併兩個鍊錶,,生成第三個鍊錶 遞迴
listnode* renewcombinelist(listnode* p1, listnode* p2)//合併兩個鍊錶,,生成第三個鍊錶  遞迴

else

return pnewlist;

}

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

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

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

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

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

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