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

2021-06-16 20:37:34 字數 2238 閱讀 9501

方法一:非遞迴

**:

#include "stdafx.h"

#include using namespace std;

struct listnode

;//合併兩個有序鍊錶,非遞迴方法

listnode *mergetwolist(listnode *plistonehead, listnode *plisttwohead)

if (plisttwohead == null)

listnode *pnode1 = plistonehead;

listnode *pnode2 = plisttwohead;

listnode *pmergelisthead = null;

listnode *pcurlastnode = null;

if (pnode1->m_nvalue < pnode2->m_nvalue)

else

while (pnode1 != null && pnode2 != null)

else

if (pnode1 == null)

if (pnode2 == null)

}return pmergelisthead;

}//建立乙個鍊錶,輸入從頭到尾結點的值,輸入-1表示結束

void createlist(listnode *& phead)

phead->m_pnext = null;

ishead = false;

pcurlastnode = phead;

} else

plistnode->m_pnext = null;

pcurlastnode->m_pnext = plistnode;

pcurlastnode = plistnode;

} }}

//從頭到尾列印鍊錶

void printlist(listnode *&phead)

cout << endl;

} else }

int _tmain(int argc, _tchar* argv)

printlist(pmergelisthead);

system("pause");

return 0;

}

方法二:遞迴

**:

#include "stdafx.h"

#include using namespace std;

struct listnode

;//合併兩個有序鍊錶,遞迴方法

listnode *mergetwolist(listnode *plistonehead, listnode *plisttwohead)

if (plisttwohead == null)

listnode *pmergelisthead = null;

if (plistonehead->m_nvalue < plisttwohead->m_nvalue)

else

return pmergelisthead;

}//建立乙個鍊錶,輸入從頭到尾結點的值,輸入-1表示結束

void createlist(listnode *& phead)

phead->m_pnext = null;

ishead = false;

pcurlastnode = phead;

} else

plistnode->m_pnext = null;

pcurlastnode->m_pnext = plistnode;

pcurlastnode = plistnode;

} }}

//從頭到尾列印鍊錶

void printlist(listnode *&phead)

cout << endl;

} else }

int _tmain(int argc, _tchar* argv)

printlist(pmergelisthead);

system("pause");

return 0;

}

面試題25 合併兩個排序鍊錶

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。include include list.h using namespace std struct listnode listnode mergetwolists listnode phead1,listnode p...

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

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。hint 請務必使用鍊錶。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為兩個整數n和m 0 n 1000,0 m 1000 n代表將要輸入的第乙個鍊錶的元素的個數...

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

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。非遞迴 第一種方法 非遞迴 struct listnode listnode mergetwolist listnode plistonehead,listnode plisttwohead 如果第二個鍊錶為空,則第...