| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:请帮我看看这个链表问题,归并问题。
只看楼主 加入收藏
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
请帮我看看这个链表问题,归并问题。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct LNode{
    int data;
    struct LNode*next;
}LNode,*LinkList;

void CreateList(LinkList L,int n)//创建链表函数
{
    L=(LinkList)malloc(sizeof(LNode));
    LinkList p;
    L->next=NULL;
    int i;
    scanf("%d",&n);
    for(i=0;i<=n;i++)
    {
        p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
}
void add(LinkList L1,LinkList L2,LinkList L3)//归并函数,此部分正确。
{
    LinkList p1,p2,p3;
    p1=L1->next;
    p2=L2->next;
    p3=L3;
    while(p1&&p2)
    {
        if(p1->data<p2->data)
        {
            p3->next=p1;
            p3=p1;
            p1=p1->next;
        }
        else
        {
            p3->next=p2;
            p3=p2;
            p2=p2->next;
        }
    }
    if(p1==NULL) p3->next=p2;
    else p3->next=p1;
}
int main()
{
   LinkList L1,L2,L3,r;
   int m,n;
   scanf("%d",&m);
   CreateList(L1,m);
   scanf("%d",&n);
   CreateList(L2,n);
   add(L1,L2,L3);
   r=L3->next;
   while(r)
   {
    printf("%d",r->next);//输出结果
    r=r->next;
   }
   return 0;
}
这是代码,问题是 将两个有序递增链表归并成一个有序递增链表,我运行时总是崩溃。晕死,归并函数正确无误。求大神相助。
搜索更多相关主题的帖子: include 
2015-09-29 18:23
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:10 
应该是这个函数void CreateList(LinkList L,int n)有问题,原因可能是参数传递错误,时刻记住参数传的是值,即使是指针也是传递的指针的值。好好的学学练练调试吧,这种问题通过调试应该能够找到原因,调试是一种很基础,很实用,很重要,也不太难掌握的技能,大概因为不是考试内容,所以有好多人不愿学。
2015-09-29 19:20
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 2楼 jklqwe111
。。。初学者中的初学者。。
2015-09-29 19:38
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
回复 3楼 hzm19960111
这些代码是你写的吗
2015-09-29 20:07
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct LNode{
    int data;
    struct LNode*next;
}LNode,*LinkList;

void CreateList(LinkList L,int n)//创建链表函数
{
    printf("L02:%d\n",(int)L);
    L=(LinkList)malloc(sizeof(LNode));
    LinkList p;
    L->next=NULL;
    int i;
    scanf("%d",&n);
    for(i=0;i<=n;i++)
    {
        p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;

 printf("L03:%d\n",(int)L);
    }
}
void add(LinkList L1,LinkList L2,LinkList L3)//归并函数,此部分正确。
{  
   
    LinkList p1,p2,p3;
    p1=L1->next;
    p2=L2->next;
    p3=L3;
    while(p1&&p2)
    {
        if(p1->data<p2->data)
        {
            p3->next=p1;
            p3=p1;
            p1=p1->next;
        }
        else
        {
            p3->next=p2;
            p3=p2;
            p2=p2->next;
        }
    }
    if(p1==NULL) p3->next=p2;
    else p3->next=p1;
}
int main()
{
   LinkList L1,L2,L3,r;
   int m,n;
   scanf("%d",&m);

 printf("L01:%d\n",(int)L1);
   CreateList(L1,m);

 printf("L04:%d\n",(int)L1);
   scanf("%d",&n);
   CreateList(L2,n);
   add(L1,L2,L3);
   r=L3->next;
   while(r)
   {
    printf("%d",r->next);//输出结果
    r=r->next;
   }
   return 0;
}

运行一下以上代码,从输出中能看出些什么吗
2015-09-29 20:32
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 3楼 hzm19960111
嗯。。。
2015-09-29 22:47
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 4楼 jklqwe111
看不出个所以然。。
2015-09-29 23:28
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 5楼 jklqwe111
教教我把
2015-09-29 23:28
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
最起码应该把出错信息和程序输出的信息贴出来别人才好帮你,L01,L02,L03,L04是否有输出,值是什么?
猜测一下应该是L01=L02=L04,而L03是另一个值,如是这样,你创建的链表被你弄丢了,L03=L04才符合逻辑。
2015-09-30 08:36
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
这怎么教啊,知识是连贯的,你小学一年级都没上,就要从高一开始......

总有那身价贱的人给作业贴回复完整的代码
2015-09-30 08:43
快速回复:请帮我看看这个链表问题,归并问题。
数据加载中...
 
   



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

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