| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1935 人关注过本帖
标题:想用链表做一个学生信息管理系统,发现运行不成
只看楼主 加入收藏
时间都会给你
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2016-12-21
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:10 
想用链表做一个学生信息管理系统,发现运行不成
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define LEN sizeof(struct stu)
struct stu
{
    char num[3];
    char name[20];
    char age[3];
    char sex[2];
    char bir[12];
    char adr[20];
    char tel[15];
    char mail[20];
    struct stu*next;
};
int n;
struct stu*creat()

{
    struct stu*head;
    struct stu *p1,*p2;
    n=0;
    p1=p2=(struct stu*)malloc(LEN);
    scanf("%s,%s %s %s %s %s %s %s %s",&p1->num ,&p1->name ,&p1->age ,&p1->sex ,&p1->bir ,&p1->adr ,&p1->tel ,&p1->mail );
    head=NULL;
    while (p1->num!=0)
    {
        n=n+1;
        if(n==1)head=p1;
        else p2->next=p1;
        p2=p1;
        p1=(struct stu*)malloc(LEN);
        scanf("%s,%s %s %s %s %s %s %s %s",&p1->num ,&p1->name ,&p1->age ,&p1->sex ,&p1->bir ,&p1->adr ,&p1->tel ,&p1->mail );
    }
    p2->next=NULL;
    return(head);
    }
    void print(struct stu *head)
    {
    struct stu*p;
    printf("\n %d个数据为:\n",n);
    p=head;
    if(head=NULL)
    do
    { printf("%s,%s %s %s %s %s %s %s %s",p->num ,p->name ,p->age ,p->sex ,p->bir ,p->adr ,p->tel ,p->mail );
    p=p->next;
   
    }while(p!=NULL);
}
int main()
{
    struct stu*head;
    head=creat();
    print(head);
   
}
搜索更多相关主题的帖子: 管理系统 include 信息 
2017-05-22 10:55
时间都会给你
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2016-12-21
收藏
得分:0 
刚开始接触链表,表示很小白
2017-05-22 11:00
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:10 
如果你只是单纯的想用链表把这个程序写出来,而不打算深入理解链表的话,那么你可以用置顶帖的通用链表来完成你的程序。你只需要提供数据,链表的一切操作调用相应的函数就可以了。

如果你打算深入理解链表的话……尝试在纸上画一个链表会容易很多。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-22 11:03
时间都会给你
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2016-12-21
收藏
得分:0 
回复 3楼 renkejun1942
要深入,但是我不怎么太懂啊,怎么画图理解?谢谢
2017-05-22 11:05
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
回复 4楼 时间都会给你
哇~看来要删帖了~~
@renkejun1942删掉我那个贴吧~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 11:19
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 5楼 九转星河
你的那个帖子我都认真回了。

但是我不看了,逻辑太混乱了,完全搞不懂,我不想折磨我自己。

也行,我把我的回复转过来。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-22 11:22
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
程序代码:
struct stu*creat()

{
    struct stu*head;
    struct stu *p1,*p2;
    n=0;
    p1=p2=(struct stu*)malloc(LEN);
    scanf("%s,%s %s %s %s %s %s %s %s",&p1->num ,&p1->name ,&p1->age ,&p1->sex ,&p1->bir ,&p1->adr ,&p1->tel ,&p1->mail );// & 多余的
    head=NULL;
    while(p1->num!=0) // num 是一个字符串 为什么会直接跟 0 做对比?
    {
        n=n+1;
        if(n==1)head=p1;
        else p2->next=p1;
        p2=p1;
        p1=(struct stu*)malloc(LEN);//这里也有问题,如果,while判断不成立,那么会导致内存泄漏
        scanf("%s,%s %s %s %s %s %s %s %s",&p1->num ,&p1->name ,&p1->age ,&p1->sex ,&p1->bir ,&p1->adr ,&p1->tel ,&p1->mail );// & 多余的
    }
    p2->next=NULL;
    return(head);
    }
    void print(struct stu *head) //吐槽已发,能不能不要进行这样的缩进啊,我开始还以为print是一个嵌套函数
    {
    struct stu*p;
    printf("\n %d个数据为:\n",n);
    p=head; //遍历链表,不存在修改链表的可能性,所以这个临时的p变量是无意义的多余。
    if(head=NULL) //如果head == NULL 则执行循环?这几个意思啊
    do //  do while 至少会执行一次,如果是空链表,这里就越界了
    { printf("%s,%s %s %s %s %s %s %s %s",p->num ,p->name ,p->age ,p->sex ,p->bir ,p->adr ,p->tel ,p->mail );
    p=p->next;
  
    }while(p!=NULL);
}





[此贴子已经被作者于2017-5-22 11:39编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-22 11:23
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 renkejun1942
我那个通用链表我还是没有写详细说明参数~鲁棒性不强~不会用还是会有出错的时候~当然rekejun1942的封装接口处理较好~操作简单~那个可以试一下~~建议新手先踏踏实实理解一下~我那个其实是作为参考以及闲得没事用来省功夫的~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-22 11:25
时间都会给你
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2016-12-21
收藏
得分:0 
回复 7楼 renkejun1942
谢谢了
2017-05-22 11:29
时间都会给你
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2016-12-21
收藏
得分:0 
回复 7楼 renkejun1942
谢谢了
2017-05-22 11:29
快速回复:想用链表做一个学生信息管理系统,发现运行不成
数据加载中...
 
   



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

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