【面接問題】剣はoffer 17を指す--2つの増加したチェーンテーブルを合併して、結果はやはり増加します
833 ワード
2つのチェーンテーブルlist 1とlist 2があり、いずれも秩序正しく増加したチェーンテーブルである
この2つのチェーンテーブルをマージしますが、マージが完了した後も増加します.
まず2つのチェーンテーブルが空であるか否かを判断し、そのうちの1つが空であればそのまま別のテーブルに戻る、
さらにlist 1とlist 2のヘッダノードの大きさを比較し,合計ヘッダノードを1つ選択し,後の比較を行う.
コードは次のように実装されます.
この2つのチェーンテーブルをマージしますが、マージが完了した後も増加します.
まず2つのチェーンテーブルが空であるか否かを判断し、そのうちの1つが空であればそのまま別のテーブルに戻る、
さらにlist 1とlist 2のヘッダノードの大きさを比較し,合計ヘッダノードを1つ選択し,後の比較を行う.
コードは次のように実装されます.
// ,
//
#include
using namespace std;
struct ListNode
{
int _value;
ListNode* _next;
};
ListNode* MergeList(ListNode* pHead1, ListNode* pHead2)
{
if (pHead1 == NULL)
{
return pHead2;
}
else if (pHead2 == NULL)
{
return pHead1;
}
ListNode* pMergeHead = NULL;
if (pHead1->_value < pHead2->_value)
{
pMergeHead = pHead1;
pMergeHead->_next = MergeList(pHead1->_next, pHead2);
}
else
{
pMergeHead = pHead2;
pMergeHead->_next = MergeList(pHead1, pHead2->_next);
}
return;
}