[讨论]关于C语言动态链表的问题
[讨论]关于C语言动态链表的问题议题作者:Neeke
信息来源:邪恶八进制信息安全团队([url=http://www.eviloctal.com/]www.eviloctal.com[/url])
小弟写了一个C语言的学生信息管理系统,要求动态存储,不能用数组(数据的好写,已经搞定),使用函数以及指针,要有录入数据,插入数据,删除数据,数据查看,按平均成绩排序功能。由于小弟不才,现在只写出了录入和查看功能,指针太多了,后面不会写了(不知道该怎么指了 --!)懂的朋友麻烦帮帮忙理理思路,先谢谢各位了!以下是源码:
/****
作者:neeke
时间:20071003
描述:学生信息管理系统
备注:写的好!
*****/
#include<stdio.h>
#include<malloc.h>
#define NULL 0 //预定义NULL为0
#define ST sizeof(struct student) //预定义ST为sizeof(struct student)
int n; //全局变量
struct student //声明结构体student包含学号,姓名,语文成绩,数学成绩,英语成绩
{
long num;
char name[15];
float chs;
float math;
float eng;
struct student *next;
};
struct student *head;
struct student *creat(void) //声明一个返回值为指针类型的函数,带回一个指向链表头的指针
{
void yindao(); //声明引导函数
struct student *p1,*p2; //声明链表指针
n=0;
fflush(stdin); //清空缓冲区
p1=p2=(struct student *) malloc(ST); //开辟新单元
system("cls"); //清屏
printf("是否开始?(y/n)\n");
while(getchar()=='y')
{
p1=(struct student *)malloc(ST);
printf("请输入学生学号:");
scanf("%ld",&p1->num);
fflush(stdin);
printf("请输入学生姓名:");
scanf("%s",&p1->name);
fflush(stdin);
printf("请输入学生语文成绩:");
scanf("%f",&p1->chs);
fflush(stdin);
printf("请输入学生数学成绩:");
scanf("%f",&p1->math);
fflush(stdin);
printf("请输入学生英语成绩:");
scanf("%f",&p1->eng);
fflush(stdin);
if(n==0)head=p1; //当n为0时,把p1赋予head
else p2->next=p1; //否则,前一链尾指向后一链头
p2=p1; //p1指向下一链
n=n+1;
printf("是否继续?(y/n)\n");
};
p2->next=NULL; //输入结束,链表尾至空,链表结束
return(head); //返回头指针
}
void print(struct student *head) //声明数据查看函数,接收头指针
{
struct student *p;
printf("\n%d条记录分别是:\n",n);
p=head; //p指向头指针
if(head!=NULL) //当头指针不为空就执行
do
{
printf("学号:%ld 姓名:%s 语文:%f 数学:%f 英语:%f\n",p->num,p->name,p->chs,p->math,p->eng);
p=p->next;
}while(p!=NULL); //当p指针为空,即指向链表尾时停止循环
}
void main()
{
void yindao(); //声明引导函数
yindao(); //调用
}
void yindao() //声明引导函数
{
struct student *w;
struct student *creat(void); //声明建表函数
char a;
void insert(struct student *x);
void print(struct student *head);
system("cls"); //清屏
printf("\t***********\n"); //版权信息
printf("\t 学生信息管理系统\n");
printf("\t 版权所有 翻版必究\n");
printf("\t By:Neeke\n");
printf("\t***********\n");
printf("*************************************\n"); //用户界面
printf(" *********开始录入(s)********* \n");
printf(" *********插入数据(i)********* \n");
printf(" *********删除数据(d)********* \n");
printf(" *********查看数据(c)********* \n");
printf(" *********退出系统(e)********* \n");
printf("*************************************\n");
fflush(stdin);
a=getchar();
switch(a) //等待用户选择
{
case 's': creat();yindao();
case 'i': insert(head);
case 'c': print(head);yindao();
}
}
void insert(struct student *x)
{
}
请各位只需要帮我提提思路,最好不要直接给我写好的源码。我希望我自己能写出来,毕竟这样理解的更深些!朋友多了路好走!
[url=http://wpa.qq.com/msgrd?V=1&Uin=9920317&Site=邪恶八进制信息安全团队技术讨论组&Menu=yes][img]http://forum.eviloctal.com/images/default/qq.gif[/img][/url]
帖子8 精华[url=http://forum.eviloctal.com/digest.php?authorid=126762]0[/url] 积分21 阅读权限40 性别男 来自陕西 在线时间6 小时 注册时间2007-6-13 最后登录2008-7-21 [url=http://www.ineeke.cn]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=126762]查看详细资料[/url]TOP [url=http://www.google.cn/search?q=软件外包&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]软件项目外包[/url]
[url=http://forum.eviloctal.com/space-uid-67122.html]wzt[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
荣誉会员
[img]http://forum.eviloctal.com/images/default/star_level2.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img] 建议你还是先把链表的一些基础操作,比如填加,删除接点,便利等等都自己写会了,在来写这个东西把
[url=http://wpa.qq.com/msgrd?V=1&Uin=71579912&Site=邪恶八进制信息安全团队技术讨论组&Menu=yes][img]http://forum.eviloctal.com/images/default/qq.gif[/img][/url]
帖子19 精华[url=http://forum.eviloctal.com/digest.php?authorid=67122]2[/url] 积分3263 阅读权限100 性别男 在线时间33 小时 注册时间2006-10-18 最后登录2008-7-24 [url=http://tthacker.sitesled.com]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=67122]查看详细资料[/url]TOP [url=http://www.google.cn/search?q=鲜花预定&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]爱要怎么说出口[/url]
[url=http://forum.eviloctal.com/space-uid-69539.html]sudami[/url]
大米米
[img]http://forum.eviloctal.com/customavatars/69539.gif[/img]
运维管理组
[img]http://forum.eviloctal.com/images/default/star_level2.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img][img]http://forum.eviloctal.com/images/default/star_level1.gif[/img] 对于动态的,或者用链表,或者用vector。
另外建议将部分指针改为引用,多看看数据结构的书和上面的例子。。。WINDOWS内核疯狂爱好者
帖子243 精华[url=http://forum.eviloctal.com/digest.php?authorid=69539]6[/url] 积分5537 阅读权限150 性别男 在线时间1115 小时 注册时间2007-1-10 最后登录2008-7-24 [url=http://hi.baidu.com/sudami]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=69539]查看详细资料[/url]TOP [url=http://www.google.cn/search?q=兼职&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]赚更多的钱[/url]
[url=http://forum.eviloctal.com/space-uid-142121.html]wantong[/url] [img]http://forum.eviloctal.com/images/avatars/pw/mm1.gif[/img]
晶莹剔透§烈日灼然 我觉得行先把文件的读写等看好.链表的操作当然是很重要的.
帖子2 精华[url=http://forum.eviloctal.com/digest.php?authorid=142121]0[/url] 积分9 阅读权限40 性别男 在线时间18 小时 注册时间2007-10-2 最后登录2007-11-30 [url=http://forum.eviloctal.com/space.php?action=viewpro&uid=142121]查看详细资料[/url]TOP
[url=http://forum.eviloctal.com/space-uid-126762.html]neeke[/url] [img]http://forum.eviloctal.com/customavatars/126762.bmp[/img]
晶莹剔透§烈日灼然 嗯 谢谢各位的指教了 其实后面的功能如何实现我能想通,比如插入新数据时候指针该指向链表哪一个地方。但是一动手去写,写着写着就晕了,貌似自己没耐心写。。。。汗。。。 [img]http://forum.eviloctal.com/images/smilies/yangcong/08.gif[/img]
有些东西能想出来,但是真正写就。。。。
郁闷。。朋友多了路好走!
[url=http://wpa.qq.com/msgrd?V=1&Uin=9920317&Site=邪恶八进制信息安全团队技术讨论组&Menu=yes][img]http://forum.eviloctal.com/images/default/qq.gif[/img][/url]
帖子8 精华[url=http://forum.eviloctal.com/digest.php?authorid=126762]0[/url] 积分21 阅读权限40 性别男 来自陕西 在线时间6 小时 注册时间2007-6-13 最后登录2008-7-21 [url=http://www.ineeke.cn]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=126762]查看详细资料[/url]TOP [url=http://www.google.cn/search?q=软件外包&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]软件项目外包[/url]
[url=http://forum.eviloctal.com/space-uid-70961.html]louwangzhiyu[/url] [img]http://forum.eviloctal.com/images/avatars/pw/male2.gif[/img]
晶莹剔透§烈日灼然 我的看法,画一个流程图是好的.水中没有痕迹,但漏网之鱼已游过
帖子5 精华[url=http://forum.eviloctal.com/digest.php?authorid=70961]0[/url] 积分20 阅读权限40 性别男 来自陕西 在线时间9 小时 注册时间2007-1-12 最后登录2008-7-24 [url=http://zhponly.blog.sohu.com]查看个人网站[/url]
[url=http://forum.eviloctal.com/space.php?action=viewpro&uid=70961]查看详细资料[/url]TOP [url=http://www.google.cn/search?q=DHC化妆品&client=pub-0204114945524753&forid=1&prog=aff&ie=UTF-8&oe=UTF-8&cof=GALT%3A#008000;GL%3A1;DIV%3A336699;VLC%3A663399;AH%3Acenter;BGC%3AFFFFFF;LBGC%3A336699;ALC%3A0000FF;LC%3A0000FF;T%3A000000;GFNT%3A0000FF;GIMP%3A0000FF;FORID%3A1&hl=zh-CN]让女孩一夜变的更有女人味[/url]
[url=http://forum.eviloctal.com/space-uid-13051.html]hack1125[/url] [img]http://forum.eviloctal.com/images/avatars/noavatar.gif[/img]
晶莹剔透§烈日灼然
页:
[1]