面試題17 合併兩個排序的鍊錶

2021-07-02 23:04:48 字數 1078 閱讀 3859

題目:輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。

非遞迴:

/*第一種方法:非遞迴*/

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...