【3.A.S.T】网络安全爱好者's Archiver

黑客学习

jjcd 发表于 2008-7-25 13:50

[讨论]关于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()==&#39;y&#39;)
  {
   
    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 &#39;s&#39;: creat();yindao();
    case &#39;i&#39;: insert(head);
    case &#39;c&#39;: 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]

Asker 发表于 2008-7-25 13:50

建议你还是先把链表的一些基础操作,比如填加,删除接点,便利等等都自己写会了,在来写这个东西把
[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]

tony仔 发表于 2008-7-25 13:50

对于动态的,或者用链表,或者用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]
晶莹剔透§烈日灼然

虎儿 发表于 2008-7-25 13:50

我觉得行先把文件的读写等看好.链表的操作当然是很重要的.
帖子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]
晶莹剔透§烈日灼然

盈盈 发表于 2008-7-25 13:50

嗯 谢谢各位的指教了 其实后面的功能如何实现我能想通,比如插入新数据时候指针该指向链表哪一个地方。但是一动手去写,写着写着就晕了,貌似自己没耐心写。。。。汗。。。  [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]
晶莹剔透§烈日灼然

树仔 发表于 2008-7-25 13:50

我的看法,画一个流程图是好的.水中没有痕迹,但漏网之鱼已游过
帖子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]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.