免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include #include#define MENU_NUM 7#define N 3typedef struct s1 char no11; /*学号由10个字符组成*/ char name15; /*学生姓名*/ float scoreN; /*各门课成绩*/ float sum; /*总分*/ float average; /*平均分*/ int order; /*名次*/ struct s1 *next; /*指向后继结点的指针*/STUDENT; /*定义结构体类型*/STUDENT * head=NULL;void InputData( STUDENT * ptr );void PrintMenu( );int Menu_Select( );void Init( );void create( );void print( ) ;void Delete( );void append();void computer();main() int key; while(1) key=Menu_Select(); switch(key) case 0: Init(); /初试化链表。也就是若链表不为空则释放链表中所有数据,将head置为空(NULL) break; case 1: create(); /创建链表,输入数据 break; case 2: Delete(); /删除一个指定学号的记录数据 break; case 3: print(); /打印链表中所有数据 break; case 4: computer(); /计算链表中所有人的总分和平均分 break; case 5: append(); /追加一个数据到链表的尾部 break; case 6: Init(); /释放链表 exit(0); ;void PrintMenu( ) int i; char * menu= 0. Init list, 1. Enter list, 2. Delete a record from list, 3. Print list, 4. Compute the score, 5. Insert record to list, 6. Quit ; printf(nn); for (i=0;inext;/ptr指向下一个结构数据 free(p);/释放p所指向的结构数据的内存 p=ptr;/将p指向ptr所指向的数据 head=NULL;/将head指向NULLvoid create( ) /创建单链表 STUDENT *pt, *pth=NULL; /定义两个指针变量:pt指向即将申请新的数据内存,pth指向当前数据 while(1) pt=(STUDENT *)malloc(sizeof(STUDENT);/让pt指向新申请的内存空间 InputData(pt);/输入数据,存放到pt所指向的结构数据。注意让pt的next指向NULL if (strcmp(pt-no,)=0) free(pt);/释放pt所指向的内存空间 break;/退出循环 else if (head=NULL) pth=pt; head=pt;/将头指针head和pth指向pt else pth-next=pt; /将pth的next指向pt; pth=pt; /将pth指向pt; ;void print( ) /打印单链表中所有数据 int i=0; STUDENT *p;/第一个指针p p=head;/将p指向head printf(n); printf(*STUDENT*n); printf(|rec|no | name | sc1| sc2| sc3| sum | ave |order|n); printf(|-|-|-|-|-|-|-|-|-|n); /打印表头 while (p!=NULL) printf(|%3d|%10s|%-16s|%4.1f|%4.1f|%4.1f|%6.2f|%5.1f|%5d|n, +i,p-no,p-name,p-score0,p-score1,p-score2, p-sum,p-average,p-order); /打印p所指向的结构中的所有数据。注意打印数据间的分隔线 p=p-next;/将p指向p的下一个结构数据 printf(*END*n);/打印表尾void Delete( ) /删除一个记录 STUDENT *p,*pth;/定义两个指针p,pth char no11;/定义一个整数no(用来存储输入的学号) printf(intput delete non); scanf(%s,no);/用输入语句输入一个学号存储到no中 p=head;pth=head;/将p和pth都指向头指针 if (strcmp(p-no,no)=0) /也就是若头指针指向的数据需要删除 head=head-next;/将head指针指向head的下一个数据; free(p);/释放p所指向的数据 else p=p-next;/将p指向p的下一个数据 while ( p!=NULL) if (strcmp(p-no,no)=0) /找到了要删除的数据 pth-next=p-next;/将pth的next指向p的next free(p);/释放p break;/退出循环 else pth=pth-next;/将pth指向pth的next 或 将pth指向p p=p-next;/将p指向p的next void append() STUDENT *p,*pth;/定义两个指针变量p,pth pth=head;/将pth指向head while ( pth-next!=NULL) pth=pth-next;/ptr指向ptr的next p=(STUDENT *)malloc(sizeof(STUDENT);/将p指向新申请的内存空间 InputData(p);p-next=NULL;/数据数据存储到p所指向的内存空间,注意将p的next置为NULL pth-next=p;/将ptr的next指向pvoid InputData( STUDENT *ptr ) int i; printf(enter no:); scanf(%s,ptr-no); if (strcmp(ptr-no,)=0 ) return; printf(enter name:); scanf(%s,ptr-name); for(i=0;iscorei); ptr-sum=0; ptr-average=0; ptr-order=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州省二级建造师《施工管理》真题及答案解析
- 2025年安全员B证考试通关练习试题汇编附答案详解
- 《消防设施操作员》中级理论考试题及答案解析
- 2025年安全员B证考试试题及答案详解(名校卷)
- 建筑材料考试题及答案
- 建筑资料员考试复习资料内部题库
- 小学生防烫伤安全课件
- 房地产物业工程面试试题及答案
- 招采人员考试试题及答案
- 2025 年大学通信工程(通信网络)试题及答案
- 树木买卖砍伐协议书
- 高空曲臂车安全操作规程
- 2025年粉尘涉爆培训题库及答案
- 厨房消防安全培训课件
- 2025江苏吉安吉水县城控人力资源服务有限公司招聘水电工2人笔试考试参考试题附答案解析
- 新员工CNC操机技能培训计划含理论实操
- 丙型肝炎防治指南
- 2025中国农业科学院第三批统一招聘2人笔试考试备考题库及答案解析
- GB/T 30340-2025机动车驾驶员培训机构业务条件
- 传统文化经典教案范例分享
- 统战工作基础知识手册
评论
0/150
提交评论