【面接問題】剣はoffer 17を指す--2つの増加したチェーンテーブルを合併して、結果はやはり増加します

833 ワード

2つのチェーンテーブルlist 1とlist 2があり、いずれも秩序正しく増加したチェーンテーブルである
この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;
}