资源描述:
《实验一--线性表基本操作的编程实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一线性表基本操作的编程实现【实验目的】线性表基本操作的编程实现要求:线性表基本操作的编程实现(2学时,验证型),掌握线性表的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、逆序、排序等操作,存储结构可以在顺序结构或链表结构中任选,可以完成部分主要功能,也可以用菜单进行管理完成大部分功能。还鼓励学生利用基本操作进行一些更实际的应用型程序设计。【实验性质】验证性实验(学时数:2H)【实验内容】把线性表的顺序存储和链表存储的数据插入、删除运算其中某项进行程序实现。建议实现键盘输入数据以实现程序的通用性。为了体现功能的正常性,至少要
2、编制遍历数据的函数。【注意事项】1.开发语言:使用C。2.可以自己增加其他功能。【思考问题】1.线性表的顺序存储和链表存储的差异?优缺点分析?2.那些操作引发了数据的移动?3.算法的时间效率是如何体现的?4.链表的指针是如何后移的?如何加强程序的健壮性?【参考代码】(以下内容,学生任意选择一个完成即可)(一)利用顺序表完成一个班级学生课程成绩的简单管理1、预定义以及顺序表结构类型的定义 (1)#include#include#defineListSize100//根据需要自己设定一个班级能够容纳的最大学生数(2)t
3、ypedefstructstu{intnum;//学生的学号charname[10];//学生的姓名floatphysics;//物理成绩floatmath;//数学成绩floatenglish;//英语成绩}STUDENT;//存放单个学生信息的结构体类型typedefstructList{STUDENTstu[ListSize];//存放学生的数组定义,静态分配空间intlength;//记录班级实际学生个数}LIST;//存放班级学生信息的顺序表类型2、建立班级的学生信息voidlistcreate(LIST*Li,intm)//m为该班级的实
4、际人数{inti;Li->length=0;for(i=1;;i++)//输入m个学生的所有信息{printf("请输入第%d位学生的信息:",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
5、->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("无更多的存储空间!");return0;}if(i<1
6、
7、i>Li->length+1)//插入位置检验,如果错误就返回0退出程序
8、。return0;else{printf("请输入插入的学生信息:");printf("学号=");scanf("%d",&e.num);printf("姓名=");scanf("%s",e.name);printf("物理成绩=");scanf("%f",&e.physics);printf("数学成绩=");scanf("%f",&e.math);printf("英语成绩=");scanf("%f",&e.english);for(j=Li->length;;j--)//从i位置到最后的元素依次往后移动Li->stu[j+1]=;Li->st
9、u[i]=e;//学生e放入到i位置Li->length++;//学生实际人数加1return1;}}4、删除一个学生信息intlistdel(LIST*Li,inti)//删除第i个学生的信息{intj;if(i<1
10、
11、i>Li->length+1)//删除位置检验,如果错误就返回0退出程序。return0;else{if(ilength)for(;j<=Li->length;j++)//从删除位置后一个到最后的元素依次往前移动;Li->length--;return1;}}5、显示所有学生信息voidlistdisplay(LIST*L
12、i){inti;printf("班级学生信息如下:");printf("学号姓名物理成绩数学成绩英语成绩