已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。

来源:互联网 发布:快速背单词软件 编辑:程序博客网 时间:2024/05/21 11:13

题目:已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
1.循环方法:

核心代码:pNode Combine(pNode p,pNode node1, pNode node2)     //node1 node2是有序的链表的头;将两个有序的链表合并,并保持有序状态{    pNode p1 = node1;    pNode p2 = node2;    while (NULL != p1 && NULL != p2)  //两个都不为空时有三种情况    {        if (p1->Element < p2->Element)          {            InsertEnd(p, p1->Element);            p1 = p1->Next;        }//          Combine(p, p1, p2);        else if (p1->Element > p2->Element)        {            InsertEnd(p, p2->Element);            p2 = p2->Next;//          Combine(p,p1, p2);        }        else        {            InsertEnd(p, p1->Element);            InsertEnd(p, p2->Element);            p1 = p1->Next;            p2 = p2->Next;//          Combine(p,p1, p2);        }    }    while (NULL != p1 && NULL == p2)  //有一个为空时将另一个全部插入到合并队列中        {        InsertEnd(p, p1->Element);        p1 = p1->Next;    }    while (NULL == p1 && NULL != p2)            {        InsertEnd(p, p2->Element);        p2 = p2->Next;    }    Display(p);    return p;}

2.递归的方法

核心代码:pNode Combine(pNode p,pNode node1, pNode node2) {    pNode p1 = node1;    pNode p2 = node2;    if (NULL != p1 && NULL != p2)    {        if (p1->Element < p2->Element)        {            InsertEnd(p, p1->Element);            p1 = p1->Next;            Combine(p, p1, p2);        }        else if (p1->Element > p2->Element)        {            InsertEnd(p, p2->Element);            p2 = p2->Next;            Combine(p, p1, p2);        }        else        {            InsertEnd(p, p1->Element);            InsertEnd(p, p2->Element);            p1 = p1->Next;            p2 = p2->Next;            Combine(p, p1, p2);        }    }    else if (NULL != p1 && NULL == p2)    {        InsertEnd(p, p1->Element);        p1 = p1->Next;        Combine(p, p1, p2);    }    else if (NULL == p1 && NULL != p2)    {        InsertEnd(p, p2->Element);        p2 = p2->Next;        Combine(p, p1, p2);    }//  Display(p);    return p;}
阅读全文
0 0
原创粉丝点击