題目:輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。
非遞迴:
/*第一種方法:非遞迴*/
struct listnode
;listnode * mergetwolist(listnode * plistonehead, listnode * plisttwohead)
//如果第二個鍊錶為空,則第乙個鍊錶的頭結點是合併後的頭結點
if(plisttwohead==null)
//合併後的頭結點
listnode * pmergehead=null;
listnode * nodeone=plistonehead;
listnode * nodetwo=plisttwohead;
listnode * curlastnode=null;//記錄當前結點的上乙個結點
//如果第乙個鍊錶的頭結點的值小於第二個鍊錶的,將鍊錶一的頭結點設為合併後的頭結點
if(nodeone->value < nodetwo->value)
else
while(nodeone!=null&&nodetwo!=null)
else
//如果鍊錶一遍歷完畢,將鍊錶二全部接入合併後的鍊錶
if(nodeone==null)
if(nodetwo==null)
}return pmergehead;
}
遞迴:
struct listnode
;//合併兩個有序鍊錶,遞迴方法
listnode *mergetwolist(listnode *plistonehead, listnode *plisttwohead)
if (plisttwohead == null)
listnode *pmergelisthead = null;
if (plistonehead->m_nvalue < plisttwohead->m_nvalue)
else
return pmergelisthead;
}
面試題17 合併兩個排序的鍊錶
題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。hint 請務必使用鍊錶。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為兩個整數n和m 0 n 1000,0 m 1000 n代表將要輸入的第乙個鍊錶的元素的個數...
面試題17 合併兩個排序的鍊錶
struct listnode 面試題17 合併兩個排序的鍊錶 include stdafx.h include list.h include include listnode merge listnode phead1,listnode phead2 else return pmergedhead...
面試題17 合併兩個排序的鍊錶
題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶使新鍊錶仍然是遞增排序的。題目還算簡單,就是要考慮的特殊情況挺多的。如下 struct listnode class solution else current current next current next null listnode newhead...