| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1377 人关注过本帖
标题:求救!数据结构!大一初学者(自学的)一段很简单的代码不知哪里有错?求学 ...
只看楼主 加入收藏
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:20 
求救!数据结构!大一初学者(自学的)一段很简单的代码不知哪里有错?求学长和高人指点。
下面一段代码。只是实现简单的链表输入输出咋会出问题呢?好像是scanf()有问题但又不知哪儿有错?望各位指点一下!#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
#define NULL 0
typedef struct student
{
    int num;
    int score;
    struct student *next;
}student;

student *creat_list(student *L)
{
    int i;
    student *p,*r;
    L=(student * )malloc(sizeof(student));
    L->next=NULL;
    r=L;
    for(i=0;i<MAXSIZE;i++)
    {
        p=(student *)malloc(sizeof(student));
         scanf("%d,%d",&p->num,&p->score);
        p->next=NULL;
        r->next=p;
        r=p;
    }
    return L;
}
void print_list(student *L)
{
    student *s;
    s=L->next;
    while(s->next!=NULL)
    {
        printf("%ld,%d",s->num,s->score);
        s++;
    }
}
void main()
{
    student *L,*q;
    L=NULL;
    printf("输入相关数据:\n");
    q=creat_list(L);
    printf("相关数据为:\n");
    print_list(q);
}
搜索更多相关主题的帖子: next include 
2012-10-06 21:16
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
收藏
得分:0 
怎么了?没人回复?(是不是太简单了,不屑呀?)
2012-10-08 12:56
c764193441
Rank: 2
等 级:论坛游民
帖 子:18
专家分:16
注 册:2012-9-23
收藏
得分:0 
什么?
2012-10-08 16:54
c764193441
Rank: 2
等 级:论坛游民
帖 子:18
专家分:16
注 册:2012-9-23
收藏
得分:3 
输入数据时的指针有问题,地址之间传递有问题
2012-10-08 17:42
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
收藏
得分:0 
第四楼的能说具体点吗?
2012-10-09 10:40
k85218693
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2012-10-6
收藏
得分:3 
程序代码:
void print_list(student *L)
{
    student *s;
    s=L->next;    
    while(s!=NULL)//while(s->next!=NULL)
    {
        printf("%ld,%d",s->num,s->score);
        s = s->next;//s++;
    }
}

輸入應該沒問題...
輸出應該有問題...
2012-10-09 22:48
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:3 
6楼说的是正解,你将链表作为了数组在用,链表里面是移动的指针.......
2012-10-10 10:46
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
收藏
得分:0 
改了依然不行啊!几天前就改过来了,可是在电脑上还是运行部正常。输出的还是乱码,不知是不是初始化的问题。(哎!大一真难啊!)
2012-10-10 12:40
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:3 
void print_list(student *L)
{
    student *s;
    s=L->next;    ---------------------》  这个地方的语句会导致 链表的表头 不会被输出在显示器上 应该成 s=L
    while(s->next!=NULL)    ---------->这个条件判定直接改成  s!=NULL
    {
        printf("%ld,%d",s->num,s->score);
        s++;   -----》这个地方要修改成 s=s->next
    }
}

我要成为嘿嘿的黑客,替天行道
2012-10-10 21:10
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:3 
这样可以的:
程序代码:
 void print_list(student *L)

 {
     student *s;
     s=L->next;
     while(s!=NULL)
     {
         printf("%ld,%d\n",s->num,s->score);
         s=s->next;
     }

 }
2012-10-11 12:18
快速回复:求救!数据结构!大一初学者(自学的)一段很简单的代码不知哪里有错? ...
数据加载中...
 
   



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

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