学生基本信息链表.doc_第1页
学生基本信息链表.doc_第2页
学生基本信息链表.doc_第3页
学生基本信息链表.doc_第4页
学生基本信息链表.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

已知学生基本信息由学号(长整型)、姓名(字符数组)、性别(字符型)、年龄(整型)组成。定义如下结构类型:/ 定义结构体:存储学生基本信息struct STUDENT_NODE long int id;char nameMAX_LEN;char sex;int age; / 指针指向下一个结点,用以形成链表STUDENT_NODE *next;/定义结构体:存储单向链表struct STUDENT_LINKSTUDENT_NODE *top;应用上述结构类型,编程实现:建立一个结点按学号顺序存储学生信息的单向链表,并实现依据学号对链表的添加、修改、删除和检索功能;添加新结点后,应继续保持结点按学号顺序的链接方式。分别定义函数实现链表的初始化、链表的打印输出、以及在链表中添加、修改、删除和检索节点的功能;最后在main()中进行测试输出。提示:定义函数实现链表的初始化、链表的打印输出、以及在链表中添加、修改、删除和检索节点的功能void iniStudentLink(STUDENT_LINK * L); /初始化学生链表void clearStudentLink(STUDENT_LINK * L); /清空学生链表int isExist(STUDENT_LINK * L, long int id); / 判断该学号的学生信息是否存在int Add(STUDENT_LINK * L,long int id,char name,char sex, int age); /添加一个新同学的信息 int Modify(STUDENT_LINK * L, long int id,char name,char sex, int age); / 根据学号,修改该同学的信息int Delete(STUDENT_LINK * L, long int id); / 根据学号,从链表中删除该同学的信息int Search(STUDENT_LINK * L,long int id); / 根据学号,输出显示该同学信息void ShowALL(STUDENT_LINK * L); / 从头到尾,输出当前所有的同学信息答案:源代码如下void main()STUDENT_LINK* tjut;tjut=new STUDENT_LINK;iniStudentLink(tjut);Add(tjut,2007002,Tom,M,19);Add(tjut,2007007,Jack,M,20);Add(tjut,2007004,Mary,F,20);ShowALL(tjut);Modify(tjut,2007002,Tom Smith,M,19);Search(tjut,2007002);Delete(tjut,2007004);ShowALL(tjut);clearStudentLink(tjut);delete tjut;/*初始化学生链表*/void iniStudentLink(STUDENT_LINK * L)L-top=new STUDENT_NODE; /top结点是个内容为空的结点,注意其作用L-top-id=0;L-top-next=NULL;/*清空学生链表*/void clearStudentLink(STUDENT_LINK * L)STUDENT_NODE *ptr;while(L-top != NULL) ptr=L-top;L-top=L-top-next;delete ptr;return;/* 判断该学号的学生信息是否存在: 存在返回1,不存在返回0*/int isExist(STUDENT_LINK * L,long int id)int exist;STUDENT_NODE *ptr;exist=0;ptr=L-top;while(ptr!=NULL)if(id=ptr-id) /此学生信息已存在exist=1;break;ptr=ptr-next;return exist;/* 添加一个新同学的信息*/int Add(STUDENT_LINK * L, long int id,char name,char sex, int age)int error;int exist;STUDENT_NODE *ptr;STUDENT_NODE *node;error=0;exist=isExist(L,id);if(exist=1)error=1;coutError! 错误添加:id = id 此学生信息已存在!top;while(ptr-next!=NULL)&(ptr-next-idnext;node=new STUDENT_NODE;node-id=id;strcpy(node-name,name);node-sex=sex;node-age=age; /新结点插入到ptr结点之后node-next=ptr-next;ptr-next=node;cout添加:id = id 学生信息成功 !endl;return error;/ 根据学号,修改该同学的信息int Modify(STUDENT_LINK * L,long int id,char name,char sex, int age)int error;int exist;STUDENT_NODE *ptr;error=0;exist=isExist(L,id);if(exist=0)error=1;coutError! 错误修改:id = id 此学生信息不存在!top;while(ptr!=NULL)&(ptr-id!=id)ptr=ptr-next;/ 修改ptr中的信息strcpy(ptr-name,name);ptr-sex=sex;ptr-age=age; cout修改:id = id 学生信息成功 !endl;return error;/ 根据学号,从链表中删除该同学的信息int Delete(STUDENT_LINK * L,long int id)int error;int exist;STUDENT_NODE *ptr;STUDENT_NODE *node;error=0;exist=isExist(L,id);if(exist=0)error=1;coutError! 错误删除:id = id 此学生信息不存在!top;while(ptr-next!=NULL)&(ptr-next-id!=id)ptr=ptr-next;/结点ptr-next就是要删除的结点node=ptr-next;ptr-next=ptr-next-next;delete node;cout删除:id = id 学生信息成功 !endl;return error; / 根据学号,输出显示该同学信息int Search(STUDENT_LINK * L,long int id)int error;int exist;STUDENT_NODE *ptr;error=0;exist=isExist(L,id);if(exist=0)error=1;coutError! 错误显示:id = id 此学生信息不存在!top;while(ptr!=NULL)&(ptr-id!=id)ptr=ptr-next;/ 结点ptr中就是要找的结点的信息cout显示:id = id 学生信息:endl;coutid : idendl;coutname : nameendl;coutsex : sexendl;coutage : ageendl; cout显示:id = id 学生信息成功 !endl;return error;/ 从头到尾,输出当前所有的同学信息 void ShowALL(STUDENT_LINK * L)int k;STUDENT_NODE *ptr;coutnn*目前所有学生信息*top-n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论