标题:谁能告诉我这段代码错在哪里啊?
只看楼主
unique5954
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-5-18
结帖率:100%
已结贴  问题点数:10 回复次数:8 
谁能告诉我这段代码错在哪里啊?
我想建立一个单向链表,但总是无法实现,哪位好心人帮助一下啊!!我到底哪里写错了?
#include<stdio.h>
#include<stdlib.h>

struct link
{
        int data;
        struct link *next;
};

void create(struct link *L,int n)
{
        int i;
        struct link *p,*q;
        p=(struct link *)malloc(sizeof(struct link));
        L=p;

        for(i=0;i<n;i++)
        {
                scanf("%d",&p->data);
                q=(struct link *)malloc(sizeof(struct link));
                p->next=q;
                p=q;
        }
        p->next=NULL;
}

void main()
{   
        struct link *L;
        create(L,2);
        while(L!=NULL)
        {
                printf("%d\n",L->data);
                L=L->next;
        }
}
搜索更多相关主题的帖子: include create 
2011-10-04 14:19
fedcab123
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:100
注 册:2011-9-3
得分:0 
不懂指针的飘过
怎么都是问指针啊
2011-10-04 14:24
unique5954
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-5-18
得分:0 
回复 3楼 徐仁强
我认为这样没有错啊,你能告诉我怎么改吗?谢谢!
2011-10-04 15:29
unique5954
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-5-18
得分:0 
我发现是在main函数里调用create(L,2);时出现错误的。但不知道怎么解决
2011-10-04 15:36
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
这种问题最好自己Debug 不然永远都不会

                                         
===========深入<----------------->浅出============
2011-10-04 15:39
carrot娇
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-10-4
得分:0 
#define NULL 0
2011-10-04 15:56
unique5954
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2011-5-18
得分:0 
回复 5楼 laoyang103
如果我调试出来了就不会问了。
2011-10-04 22:31
mengcan555
Rank: 4
等 级:业余侠客
帖 子:104
专家分:253
注 册:2011-9-17
得分:10 
已经正确调试的代码如下:(给分哦)
#include<stdio.h>
#include<stdlib.h>

struct link
{
        int data;
        struct link *next;
};

void create(struct link *L,int n)
{
        int i;
        struct link *p,*q;
        //p=(struct link *)malloc(sizeof(struct link));
       // L=p;
         p=L;
        for(i=0;i<n;i++)
        {
                scanf("%d",&p->data);
                q=(struct link *)malloc(sizeof(struct link));
                p->next=q;
                p=q;
        }
        p->next=NULL;
}

void main()
{   
        struct link *L;
       L= (struct link *)malloc(sizeof(struct link));
        create(L,2);
    //    L=L->next;
        while(L->next!=NULL)
        {
                printf("%d\n",L->data);
                L=L->next;
        }
}
收到的鲜花
  • unique59542011-10-04 23:35 送鲜花  3朵   附言:我很赞同
2011-10-04 23:23
ckstorm
Rank: 2
等 级:论坛游民
帖 子:32
专家分:90
注 册:2005-10-2
得分:0 
修改过的在DEV-C中编译通过,质量保证
#include<stdio.h>
#include<stdlib.h>

struct link
{
        int data;
        struct link *next;
};

struct link* create(struct link *L,int n) //creat 函数需要返回头指针
{
        int i;
        struct link *p,*q;
        p=(struct link *)malloc(sizeof(struct link));
        L=p;

        for(i=0;i<n;i++)
        {
                scanf("%d",&p->data);
                q=(struct link *)malloc(sizeof(struct link));
                p->next=q;
                p=q;
        }
        p->next=NULL;
        return L;
}

int main()
{   
        struct link *L;
        L=create(L,2); //这里的L需要有个值,你的源程序没有返回任何值
        while(L->next!=NULL)  //这里要判断L->next是否为NULL
        {
                printf("%d\n",L->data);
                L=L->next;
        }
        system("PAUSE");
        return 0;
}

[ 本帖最后由 ckstorm 于 2011-10-4 23:40 编辑 ]
2011-10-04 23:38



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




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

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