| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 815 人关注过本帖
标题:链表为什么不输出
只看楼主 加入收藏
蓝桥
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2014-2-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
链表为什么不输出
Description建立长度为n的单链表A和长度为m的单链表B,n>0,m>0。编程实现将B表链接在A表的尾端,形成一个单链表A。数据类型指定为字符型。

Input第一行为A表的长度n;


第二行为A表中的数据元素


第三行为B表的长度m;


第四行为B表中的数据元素。

Output输出为链接好后的A表中的所有数据元素。


Sample Input

4
A B C D
6
1 2 3 4 5 6


Sample Output

 A B C D 1 2 3 4 5 6
#include<stdio.h>
#include<stdlib.h>

struct ch
{
    char c;
    struct ch *next;
};

struct ch *creat_list();
struct ch *insert_list(struct ch *,struct ch *);
void print_list(struct ch *);

main()
{
    struct ch *p,*p1,*p2;

    p1=creat_list();
    p2=creat_list();

    p=insert_list(p1,p2);
    print_list(p);

    return 0;
}

struct ch *creat_list()
{
    int i=0,n;
    struct ch *p,*p1,*head=NULL;

    scanf("%d",&n);
    getchar();

    while(i<n)
    {
        p=(struct ch *)malloc(sizeof(struct ch));
        p->c=getchar();
        getchar();

        if(i==0)
            head=p;
        else
            p1->next=p;
        p1=p;
        i++;
    }
    p->next=NULL;
    return head;
}  

struct ch *insert_list(struct ch *p1,struct ch *p2)
{
    struct ch *head;
    head=p1;

    while(p1->next!=NULL)
        p1=p1->next;
    p1->next=p2;
    return head;
}

void print_list(struct ch *p)
{
    int i=0;
    while(p!=NULL)
    {
        if(i==0)
        {
            printf("%c",p->c);
            i=1;
        }
        else
            printf(" %c",p->c);
        p=p->next;
    }
}
这是我的代码,在VC上运行结果都对,为什么提交时根本就不输出,真不懂啦,我哪错啦??急求,谢谢
搜索更多相关主题的帖子: include 元素 
2014-03-21 20:24
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:10 
是不是题目输入输出数据没有空格分隔,你理解错了?
2014-03-21 20:43
蓝桥
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2014-2-26
收藏
得分:0 
没有空格分隔?题目中的链表应该不包括空格,关键是根本就不输出数据,我的链表应该没问题啊,我真找不到哪不对,好恼火啊
2014-03-21 20:49
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
收藏
得分:10 
我不知道你有什么问题,你的问题描述很不清楚,而且也没有贴出运行结果的图,实在让人丧失看下去的欲望。而且每个函数的功能也应该标明,这样方便别人看。
我仔细看了你的代码,虽然不晓得你的运行结果是什么,但是就我看到的,你的函数struct ch *creat_list()里面p1没有赋初值,导致了head 和后面的部分是断开的,大概问题就是在这里。另外,整个程序我也没有看到你哪里释放内存了,使用内存申请函数这是最重要的,实在不应该忘记。

1@w-h.win
2014-03-21 20:57
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
vc上的确是可以正常运行的。
2014-03-21 20:58
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
p1在i=0时赋了初值。
2014-03-21 21:01
蓝桥
Rank: 2
等 级:论坛游民
帖 子:18
专家分:22
注 册:2014-2-26
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>

 struct ch
 {
     char c;
     struct ch *next;
 };

 struct ch *creat_list();//建立链表
 struct ch *insert_list(struct ch *,struct ch *);//插入链表操作
 void print_list(struct ch *);//打印链表

 main()
 {
     struct ch *p,*p1,*p2;

     p1=creat_list();//返回第一个链表的头指针
     p2=creat_list();//返回第二个链表的头指针

     p=insert_list(p1,p2);//返回插入链表的头指针
     print_list(p);

     return 0;
 }

 struct ch *creat_list()
 {
     int i=0,n;
     struct ch *p,*p1,*head=NULL;

     scanf("%d",&n);//链表长度
     getchar();//接收换行符

     while(i<n)
     {
         p=(struct ch *)malloc(sizeof(struct ch));
         p->c=getchar();
         getchar();//接收空格

         if(i==0)
             head=p;//使head指向第一个节点
         else
             p1->next=p;
         p1=p;
         i++;
     }
     p->next=NULL;
     return head;
 }  

 struct ch *insert_list(struct ch *p1,struct ch *p2)
 {
     struct ch *head;
     head=p1;

     while(p1->next!=NULL)
         p1=p1->next;
     p1->next=p2;//使第一个链表的最后一个节点指向第二个链表的第一个节点
     return head;
 }

 void print_list(struct ch *p)
 {
     int i=0;
     while(p!=NULL)
     {
         if(i==0)
         {
             printf("%c",p->c);
             i=1;
         }
         else
             printf(" %c",p->c);
         p=p->next;
     }
 }
2014-03-21 21:18
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
收藏
得分:0 
回复 6楼 ying8501
i=0时他赋的是p不是p1

1@w-h.win
2014-03-21 21:19
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
回复 8楼 陨灭
  p1=p;
  i++;
2014-03-21 21:52
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
收藏
得分:0 
回复 9楼 ying8501
是我看错了,因为为了方便调试,我习惯在else下面打上花括号,所以一时看在一起了,不过那里没有问题的话粗看就只有内存泄露的问题了,应该不至于没有结果

1@w-h.win
2014-03-21 22:47
快速回复:链表为什么不输出
数据加载中...
 
   



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

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