标题:归并链表的子函数为什么没起作用
只看楼主
attitude123
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-22
结帖率:75%
 问题点数:0 回复次数:5 
归并链表的子函数为什么没起作用
程序代码:
#include<iostream>
#include<stdlib.h>
#define len sizeof(list)
using namespace std;
struct list
{
    int num;
    struct list *next;
};
list *creat(int n);
list *merger(list *head1, list *head2);
void delnode(list *head);
int main()
{
    list *LA, *LB,*LC;
    LA = creat(1);
    LB = creat(2);
    LC = merger(LA, LB);
    while (LC != NULL)
    {
        cout << LC->num<<"\t"; LC = LC->next;
    }
    delnode(LC);
    return 0;
}
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;

}
list *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;
}
    void delnode(list *head)
    {
        if (head = NULL)
            return;
        list *t, *p;
        p = head;
        if (p != NULL)
        {
            t = p;
            p = p->next;
            free(t);
        }
        head = NULL;
    }
        
        

请问merger函数为什么没有把LA和LB归并起来?
搜索更多相关主题的帖子: list num next head NULL 
2017-11-16 18:25
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
得分:0 
因为你的程序是错的!

我的回答你是不是很不爽?因为你的问题也让我们很不爽,请问你问问题之前有调试过么?并没有。

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2017-12-06 11:40
attitude123
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-22
得分:0 
回复 2楼 Alien_Lee
请问你会把一个没有问题的程序拿出来问吗?
我并不是计算机专业的,很多东西我根本就不懂,我需要去不断摸索,你确实没有义务来帮我,
愿意指点一下就指点一下,不愿意就不愿意,我并不觉得你有义务帮我,你也没有权利骂我!!!
不知道你认识上一届版主炎天吗,他给我指出了很白痴的问题,让我觉得受益颇丰,这才是这个论坛最大的作用吧!
论坛里面的人水平各有高低,既然你觉得我这种人浪费了您的时间,以请绕开就是!
2017-12-29 21:36
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
不太懂你的写法,可以解释下?

剑栈风樯各苦辛,别时冰雪到时春
2017-12-29 22:31
liaohs
Rank: 4
等 级:业余侠客
威 望:7
帖 子:61
专家分:292
注 册:2017-11-26
得分:0 
int i{1;是什么意思,如果上机编译,立刻就会报错。
你首先应该试试,别搞错了。

如果是 int i=1;这句应该出现在while循环前边。
2017-12-30 21:33
attitude123
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-10-22
得分:0 
回复 5楼 liaohs
谢谢你。
2018-01-01 14:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482548-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.298205 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved