注册 登录
编程论坛 C语言论坛

起归并作用的子函数为什么没有起作用

attitude123 发布于 2017-11-21 20:32, 1123 次点击
程序代码:
ist *merger(list *p1, list *p2)
{
    list *head, *p;
    while (p1 != NULL || p2 != NULL)
    {
        int i{ 1 };


        if (p1->num > p2->num)
        {
            if (i == 1)
            {
                p = head = p2; p2 = p2->next;
            }
            else
            {
                p->next = p2; p = p2; p2 = p2->next;
            }
        }
        else
        {
            if (i == 1)
            {
                p = head = p1; p1 = p1->next;
            }
            else
            {
                p->next = p1; p = p1; p1 = p1->next;
            }
        }
        if (p1 = NULL)
        {
            p->next= p2;
        }
        if (p2 = NULL)
        {
            p->next= p1;
        }
        i++;
    }
    return head;
}
建立了两个链表,让merger函数把传进来的两个链表按从小到大的顺序归并以个链表。为什么没有实现预期效果,求大神指导
3 回复
#2
九转星河2017-11-21 20:41
回复 楼主 attitude123
首先,前提是那两个链表合并前必须是有序的~
#3
attitude1232017-11-24 17:23
回复 2楼 九转星河
n取不同的参数,通过循环建立的两个链表。
程序代码:
list *creat(int n)
{
    list *p1, *p2,*head;
    int i{1};
    while (i <= 5)
    {
        p1 = (list *)malloc(len);
        if (i == 1)
        {
            head = p1; p1->num = n;
        }
        else
        {
            p2->next = p1; p1->num = p2->num + 2;
        }
        p2 = p1;
        i++;
    }
    p2->next = NULL;
    return head;

}
#4
九转星河2017-11-24 17:30
https://bbs.bccn.net/viewthread.php?tid=482031&page=1#pid2648631

还好能在论坛找到相关的帖子这个可以参考一下~

1