輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,合成後的鍊錶也為單調不遞減規則。
1、實質就是乙個歸併排序中的merge過程(將兩個排序好的相鄰小序列合併成乙個大序列)。
2、分別採用遞迴和不遞迴的**實現。
3、注意邊界條件和異常(仍然是考慮引數的輸入,listnode* merge(listnode* phead1, listnode* phead2))
引數有兩個,分別考慮 --兩個引數的異常輸入-- 和-- 兩個引數的聯合異常輸入--。
遞迴:
listnode* merge(listnode* phead1, listnode* phead2)
else
return head;
}
非遞迴: 非遞迴的**略長,但是中間大多都是一樣的, 實質為歸併排序的merge過程
listnode* merge(listnode* phead1, listnode* phead2)
else
listnode* temp=head;
while(phead1!=null && phead2!=null) //merge過程,兩個鍊錶比較
else
}while(phead1!=null) //鍊錶2全部比較完的情況
while(phead2!=null) //鍊錶1全部比較完的情況
temp->next = null;//新煉表中,尾節點指向null。
return head;
}
合併兩個排序鍊錶
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。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...