| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:一个关于链表的小问题
只看楼主 加入收藏
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
结帖率:100%
收藏
 问题点数:0 回复次数:8 
一个关于链表的小问题
我的问题是:我在creat函数里明明已经返回了一个地址head,然后在主函数中调用时,应该是已经将head的值赋值给p了的,但是主函数里的printf却输不出任何结果,各位高手来帮看看吧。
PS:下面这段代码我自己看了半天了,还是找不出问题所在,代码写得很乱,但还是希望高手们指点一下吧。
程序代码:
#include<stdio.h>
#include<malloc.h>
#define NULLL 0
struct aa
{
    char a;
    struct aa *next;
};

struct aa *creat( int n)
{
    struct aa *p1=NULLL,*p2=NULLL,*head=NULLL;
    int m=1;
    while(1)
    {
        if(m==1&&m<n)
        {
            p2=(struct aa *)malloc(sizeof(struct aa));
            head=p2;
            p1=p2;
            printf("input the %dth characters: ",m);
            scanf("%c",&p1->a);    
            m+=1;
        }
        if(m!=1&&m<n)
        {
            p2=(struct aa *)malloc(sizeof(struct aa));
            p1->next=p2;
            p1=p2;
            printf("input the %dth characters: ",m);
            scanf("%c",&p1->a);
            m+=1;
        }
        if(m==n)
        {
            p2=(struct aa *)malloc(sizeof(struct aa));
            p1->next=p2;
            p2->next=NULLL;
            scanf("%c",&p2->a);
            break;
        }
    }
    return(head);  /*返回链表的起始地址head*/
}

int main()
{
    int n;
    struct aa *p;
    printf("please input the number of characters that you want: ");
    scanf("%d",&n);
    p=creat(n);
    while(1)
    {
        printf("(%c)",p->a);
        p=p->next;
        if(p->next==NULLL)
            break;
    }
    getch();
}


[ 本帖最后由 将是高手 于 2011-11-19 14:14 编辑 ]
搜索更多相关主题的帖子: color 
2011-11-17 21:40
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
有没有考虑scanf会读入回车的问题?消除回车的方法是getchar()
2011-11-17 21:56
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
关键是用scanf函数读入字符的时候会留一个回车符在输入流里,当再用scanf读字符时就会去读取这个回车符,你的程序自然会出错,解决的办法可以像楼上说的用getchar消除回车

另外,new是c++的关键字,不要用它做函数名

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-17 22:04
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
谢谢了,解决了!
2011-11-17 22:22
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
自己顶一下,编译通过了,可就是输不出任何东西
2011-11-19 14:15
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
没人么,来告诉我吧,这个问题困扰我很久了
2011-11-19 18:44
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:0 
结点的数据域没有值,怎么输出内容呢!如果要输出地址应该是printf("%d",p->next);
2011-11-19 19:42
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:0 
回复 7楼 心灵百合
我没想输出地址,我想的是输出结点里面的数据。可没东西输出啊
2011-11-19 20:20
gxu888
Rank: 2
等 级:论坛游民
帖 子:19
专家分:33
注 册:2011-11-10
收藏
得分:0 
楼上的你们好!能否发给一个软件呢?谢谢!576027318 zhaorui0612@
2011-11-20 09:43
快速回复:一个关于链表的小问题
数据加载中...
 
   



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

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