首页 > 技术文章 > 合并两个排序链表

7ants 2013-09-03 20:49 原文

#include <stdio.h>
#include "link.h"

/*合并两个排序链表*/
LinkNode * mergeLink(LinkNode *& pHead1, LinkNode *& pHead2)
{
    if(pHead1 == NULL)
        return pHead2;
    else if(pHead2 == NULL)
        return pHead1;
    LinkNode * pHead =0;
    if(pHead1->_value <= pHead2->_value)
    {
        pHead = pHead1;
        pHead->_next = mergeLink(pHead1->_next, pHead2);
    }
    else
    {
        pHead = pHead2;
        pHead->_next = mergeLink(pHead1, pHead->_next);
    }
    return pHead;
}

int main()
{
    LinkNode * pHead1 = 0;
    LinkNode * pHead2 = 0;
    int a[] = {1,3,5,7,9,11,13,14};
    int b[] = {2,4,6,8,10,12,15,19};
    for (int i = 0; i<sizeof(a) / sizeof(a[0]); i++)
    {
        createLink(pHead1,a[i]);
    }
    for (int i = 0; i<sizeof(b) / sizeof(b[0]); i++)
    {
        createLink(pHead2,b[i]);
    }
    printLink(pHead1);
    printLink(pHead2);
    printLink(mergeLink(pHead1,pHead2));
    return 0;
}

 

推荐阅读