c++(練習問題)————単一チェーンテーブルをマージする(単調に増加した2つのチェーンテーブルを入力し、2つのチェーンテーブルを合成したチェーンテーブルを出力する)
タイトルの説明:
2つの単調に増加したチェーンテーブルを入力し、2つのチェーンテーブルの合成後のチェーンテーブルを出力します.もちろん、合成後のチェーンテーブルは単調で減少しない規則を満たす必要があります.
テーマ分析:
2つの増加した単一チェーンテーブルノードは、挿入ソートと同様の方法で、単一チェーンテーブル2における単一チェーンテーブル1ノードの適切な位置を見つけ、挿入する.
コード実装:
2つの単調に増加したチェーンテーブルを入力し、2つのチェーンテーブルの合成後のチェーンテーブルを出力します.もちろん、合成後のチェーンテーブルは単調で減少しない規則を満たす必要があります.
テーマ分析:
2つの増加した単一チェーンテーブルノードは、挿入ソートと同様の方法で、単一チェーンテーブル2における単一チェーンテーブル1ノードの適切な位置を見つけ、挿入する.
コード実装:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode* p1 = pHead1; // 1
ListNode* p2 = pHead2; // 2
ListNode* p3 = NULL; //
ListNode* p4 = NULL; //
ListNode* nHead = NULL; //
if(p1 == NULL && p2 != NULL)
{
return p2;// 1
}
else if(p1 != NULL && p2 == NULL)
{
return p1;// 2
}
else if(p1 == NULL && p2 == NULL)
{
return NULL;//
}
else//
{
if(p1->val > p2->val)//
{
nHead = p2;
}
else{
nHead = p1;
}
while(p1 && p2)
{
if(p1->val > p2->val)//1 2
{
p3 = p2->next;
p2->next = p1;//1 2
p2 = p3;
}
else
{
p4 = p1->next;
p1->next = p2;
p1 = p4;
}
}
return nHead;
}
}
};