【C++】2つのソートされたチェーンテーブルをマージし、マージ後も秩序があることを要求
533 ワード
struct ListNode {
int m_nKey;
ListNode m_pNext;
};
ListNode* merge(ListNode* pHead1, ListNode* pHead2) {
if (pHead1 == NULL) {
return pHead2;
}
if(pHead2 == NULL) {
return pHead1;
}
ListNode* mergedList = NULL;
if (pHead1->m_nKey < pHead2->m_nKey) {
mergedList = pHead1;
mergedList->m_pNext = merge(pHead1->m_pNext, pHead2);
}
else {
mergedList = pHead2;
mergedList->m_pNext = merge(pHead2->m_pNext, pHead1);
}
return mergedList;
}
再帰解法、テストはやはり一般機能テストと特殊テストに分けます