| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖, 1 人收藏
标题:我的链表哪里错了?
只看楼主 加入收藏
q260547482
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-10
结帖率:100%
收藏(1)
 问题点数:0 回复次数:6 
我的链表哪里错了?
#include<stdio.h>
#include<stdlib.h>
struct products
{
   int num,stock,sell,store;
   char name[100];
   struct products *next;
};
typedef struct products pro;

//录入商品信息
void main()
{
 struct products *head=NULL,*p1=NULL,*p=NULL;
 int a=0;
 char ch;
    p=(struct products*)malloc(sizeof(struct products*));
 p->next=NULL;
    head=p;
 p1=head;
 p=head;

 do
 {
 printf("请输入商品编号和商品名 进货量  库存量  销售量\n");
 scanf("%d %s %d %d %d",&p->num,&p->name,&p->stock,&p->store,&p->sell);
 p->next=NULL;
 p=p->next;
 printf("继续输入?Y/N\n");
 getchar();
 ch=getchar();
 if(ch=='N')
   a=1;
 }while(a!=1);
 p1=head;
 while(p1!=NULL)
 {   
  printf("%d %s %d %d %d\n",p1->num,p1->name,p1->stock,p1->store,p1->sell);
     p1=p1->next;
 }

}
我想设计一个链表记录输入的数据,但为什么这个不可以呢?
就算改了,也只能记录一个商品的数据,我是想记录多个商品数据的。
求解答,可以的话请帮忙修改一下。急用丫。给位大侠帮帮忙。
搜索更多相关主题的帖子: 销售量 商品名 
2011-04-10 14:06
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
不知道
链表类_C语言.rar (1.71 KB)


自己参考

                                         
===========深入<----------------->浅出============
2011-04-10 14:54
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:0 
你拿我的去参考下吧
#include<stdio.h>
#include<stdlib.h>

struct products{
    int num;
    int stock;
    int sell;
    int store;
    char name[100];
    struct products *next;
};

//录入商品信息
int main(void)
{
    struct products *last,*p,*q;
    last = NULL;    //<----设定一个空的尾指针,然后依次向前插入数据
    int a=0;
    char ch;
    while(a != 1)
    {
        p = (struct products *)malloc(sizeof(struct products));//<---我用的是p做输入的结构体指针
        printf("请输入商品编号和商品名 进货量  库存量  销售量\n");
        scanf("%d %s %d %d %d",&p->num,p->name,&p->stock,&p->store,&p->sell);//<-----注意输入字符串                              //不用&符号
        p->next = last;                 
        last = p;
        printf("继续输入?Y/N\n");
        fflush(stdin);
        ch=getchar();
        if(ch=='N') a=1;
    }
    q = last;
    while(q != NULL)
    {   
        printf("%d %s %d %d %d\n",q->num,q->name,q->stock,q->store,q->sell);
        q = q->next;
    }
    return 0;
}

我的地盘
2011-04-10 18:33
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
程序代码:
do
{
printf("请输入商品编号和商品名 进货量  库存量  销售量\n");
scanf("%d %s %d %d %d",&p->num,&p->name,&p->stock,&p->store,&p->sell);  // <-- *
p->next=NULL; // <--问题在这里
p=p->next;    // <--这条语句执行后, p == NULL
printf("继续输入?Y/N\n");
getchar();
ch=getchar();
if(ch=='N')
   a=1;       // 此时输入除 'N' 以外的任意字符,程序将会继续尝试执行上面的语句 *
              // 但 p == NULL, 所以 &p->num ... 就变成了 &NULL->num..., 明白了吧
}while(a!=1);

改成下面这样就没问题了
程序代码:
do
{
printf("请输入商品编号和商品名 进货量  库存量  销售量\n");
scanf("%d %s %d %d %d",&p->num,&p->name,&p->stock,&p->store,&p->sell);
printf("继续输入?Y/N\n");
getchar();
ch=getchar();
if(ch=='N') {
   a=1;
   p->next = NULL;
} else {
   p->next = (struct products*)malloc(sizeof(struct products*));
   p = p->next;
}while(a!=1);

而且楼主这个代码还可以写得漂亮很多,好好想一下
2011-04-10 18:39
q260547482
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-10
收藏
得分:0 
我是新手嘛。。才刚学~~
2011-04-10 21:08
q260547482
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-10
收藏
得分:0 
谢谢你们的回答
2011-04-10 21:12
huiming
Rank: 2
等 级:论坛游民
帖 子:31
专家分:36
注 册:2010-4-8
收藏
得分:0 
没内存空间啊
2011-04-10 21:38
快速回复:我的链表哪里错了?
数据加载中...
 
   



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

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