合併兩個排序的鍊錶18

2021-07-12 05:22:57 字數 646 閱讀 3040

題目描述:輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然按照遞增排序。如輸入鍊錶1;鍊錶2;合併後,鍊錶3。

鍊錶定義:

//單向鍊錶的節點定義

struct listnode;

解題思路:

魯棒性,空鍊錶問題(1個為空或兩個都為空)

將兩個鍊錶的頭節點依次比較大小再合併,因為是有序的,所以合併的步驟是乙個不斷遞迴的過程。

測試用例:

int main()
函式實現:

//本題函式實現

//合併連個排序的鍊錶,並且返回合併後的頭節點

listnode* merge(listnode *l1, listnode *l2)else

return mergehead;

}//以下為其他函式實現

void listnode::show()

}//在乙個鍊錶的末尾新增乙個節點

void addtotail(listnode **head, int value)

}

合併兩個排序鍊錶

struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...

合併兩個排序鍊錶

描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...

合併兩個排序鍊錶

問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...