




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一线性表基本操作的编程实现【实验目的】线性表基本操作的编程实现要求:线性表基本操作的编程实现(2学时,验证型),掌握线性表的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、逆序、排序等操作,存储结构可以在顺序结构或链表结构中任选,可以完成部分主要功能,也可以用菜单进行管理完成大部分功能。还鼓励学生利用基本操作进行一些更实际的应用型程序设计。【实验性质】验证性实验(学时数:2H)【实验内容】把线性表的顺序存储和链表存储的数据插入、删除运算其中某项进行程序实现。建议实现键盘输入数据以实现程序的通用性。为了体现功能的正常性,至少要编制遍历数据的函数。【注意事项】1.开发语言:使用C。2.可以自己增加其他功能。【思考问题】线性表的顺序存储和链表存储的差异?优缺点分析?那些操作引发了数据的移动?算法的时间效率是如何体现的?链表的指针是如何后移的?如何加强程序的健壮性?【参考代码】(以下内容,学生任意选择一个完成即可)(一)利用顺序表完成一个班级学生课程成绩的简单管理1、预定义以及顺序表结构类型的定义(1)#include<stdio.h>#include<conio.h>#defineListSize100//根据需要自己设定一个班级能够容纳的最大学生数(2)typedefstructstu{intnum; //学生的学号charname[10]; //学生的姓名floatphysics; //物理成绩floatmath; //数学成绩 floatenglish; //英语成绩}STUDENT; //存放单个学生信息的结构体类型typedefstructList{STUDENTstu[ListSize]; //存放学生的数组定义,静态分配空间intlength; //记录班级实际学生个数}LIST; //存放班级学生信息的顺序表类型2、建立班级的学生信息voidlistcreate(LIST*Li,intm)//m为该班级的实际人数{inti;Li->length=0; for(i=1;;i++)//输入m个学生的所有信息 { printf("请输入第%d位学生的信息:\n",i); printf("学号="); scanf("%d",&Li->stu[i].num);//输入第i个学生的学号 printf("姓名="); scanf("%s",&Li->stu[i].name);//输入第i个学生的姓名 printf("物理成绩="); scanf("%f",&Li->stu[i].physics);//输入第i个学生的物理成绩 printf("数学成绩="); scanf("%f",&Li->stu[i].math);//输入第i个学生的数学成绩 printf("英语成绩="); scanf("%f",&Li->stu[i].english);//输入第i个学生的英语成绩 ;//学生人数加1 }}3、插入一个学生信息intlistinsert(LIST*Li,inti) //将学生插入到班级Li的第i个位置。{ intj; STUDENTe; if(Li->length==) //测试存储空间是否被占满 { printf("无更多的存储空间!\n"); return0; } if(i<1||i>Li->length+1) //插入位置检验,如果错误就返回0退出程序。 return0; else { printf("请输入插入的学生信息:\n"); printf("学号="); scanf("%d",&e.num); printf("姓名="); scanf("%s",); printf("物理成绩="); while(p!=NULL) { m++; if() break; else { ; ; } } if(p==Li_head) //插入在表头 { newsnode->link=p; Li_head=newsnode; } else //插入在q和p之间 { ; ; } returnLi_head;}4、删除一个学生信息SNODE*listdel(SNODE*Li_head,inti) //删除链表Li_head中第i个学生的信息{ intm=0; SNODE*p,*q;p=Li_head; q=NULL; if(i<1||Li_head==NULL)//单链表为空及插入位置校验,如果错误就退出程序 returnLi_head; while(p!=NULL) { m++; if(m==i) break; else { q=p; p=p->link; } } if(p==NULL) //i位置结点没有(超过最后一个结点) returnLi_head; if(p==Li_head) //删除表头结点 Li_head=Li_head->link; else //删除非表头结点 { ; ;//释放该结点所占的空间 } returnLi_head;}5、显示所有学生信息voidlistdisplay(SNODE*Li_head){printf("班级学生信息如下:\n"); printf("学号姓名物理成绩数学成绩英语成绩\n"); while(Li_head!=NULL) {printf("%-10d%-10s%-10.2f%-10.2f%-10.2f\n", Li_head->data.num,Li_head->,Li_head->data.physics,Li_head->data.math,Li_head->data.english); ; }}6、编写主函数main,要求测试以上所编写的listcreat、listinsert、listdel和listdisplayvoidmain()//自己设计主函数完成{ SNODE*head=NULL; inti,num; printf("请输入学生的总人数:"); scanf("%d",&num);head=listcreate(); listdisplay(head); getch();printf("请输入待插入学生的位置:"); scanf("%d",&i); printf("\n"); head=listinsert(head,i);listdisplay(head); getch(); printf("请输入需要删除学生的位置:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加密货币冷存储优化-洞察及研究
- 医疗云平台性能评估-洞察及研究
- 压力触发行为响应机制-洞察及研究
- 全球价值链竞争分析-洞察及研究
- 合肥45中九上数学试卷
- 广西桂林九年级数学试卷
- 海南省高中数学试卷
- 农村职业技能培训与农村土地流转的关系研究报告
- 城市物流拥堵治理政策-洞察及研究
- 中药毒理学研究-洞察及研究
- 2025北师大版新教材七年级上册英语单词表(精校打印)
- 2025至2030年中国电弧故障断路器(AFCI)行业市场竞争态势及产业前景研判报告
- 2025年安徽省中考英语试卷(含答案)
- 思想道德与法治2023年版电子版教材-1
- 物联网安全风险评估-第2篇-洞察阐释
- 上汽英飞凌无锡分公司第二代框架式功率模块产品导入年产150万片模块项目环评资料环境影响
- 2025注册核安全工程师考前冲刺试卷带答案
- 国家数据局《2024年“数据要素×”项目案例集》
- (2025)行政能力测试题库与答案
- 一级建造师安全生产试题及答案
- 机械质检员试题及答案
评论
0/150
提交评论