- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一线性表基本操作的编程实现实验一线性表基本操作的编程实现
实验一 线性表基本操作的编程实现
【实验目的】
线性表基本操作的编程实现
要求:
线性表基本操作的编程实现(2学时,验证型),掌握线性表的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、逆序、排序等操作,存储结构可以在顺序结构或链表结构中任选,可以完成部分主要功能,也可以用菜单进行管理完成大部分功能。还鼓励学生利用基本操作进行一些更实际的应用型程序设计。
【实验性质】
验证性实验(学时数:2H)
【实验内容】
把线性表的顺序存储和链表存储的数据插入、删除运算其中某项进行程序实现。建议实现键盘输入数据以实现程序的通用性。为了体现功能的正常性,至少要编制遍历数据的函数。
【注意事项】
1.开发语言:使用C。
2.可以自己增加其他功能。
【思考问题】
1. 线性表的顺序存储和链表存储的差异?优缺点分析?
2. 那些操作引发了数据的移动?
3. 算法的时间效率是如何体现的?
4. 链表的指针是如何后移的?如何加强程序的健壮性?
【参考代码】(以下内容,学生任意选择一个完成即可)
(一)利用顺序表完成一个班级学生课程成绩的简单管理
1、预定义以及顺序表结构类型的定义
(1) #includestdio.h
#includeconio.h
#define ListSize 100 //根据需要自己设定一个班级能够容纳的最大学生数
(2) typedef struct stu
{
int num; //学生的学号
char name[10]; //学生的姓名
float physics; //物理成绩
float math; //数学成绩
float english; //英语成绩
}STUDENT; //存放单个学生信息的结构体类型
typedef struct List
{
STUDENT stu[ListSize]; //存放学生的数组定义,静态分配空间
int length; //记录班级实际学生个数
}LIST; //存放班级学生信息的顺序表类型
2、建立班级的学生信息
void listcreate(LIST *Li,int m) //m为该班级的实际人数
{
int i;
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、插入一个学生信息
int listinsert(LIST *Li,int i) //将学生插入到班级Li的第i个位置。
{
int j;
STUDENT e;
if(Li-length== ) //测试存储空间是否被占满
{
printf(无更多的存储空间!\n);
return 0;
}
if (i1||iLi-length+1) //插入位置检验,如果错误就返回0退出程序。
return 0;
else
{
printf(请输入插入的学生信息:\n);
printf(学号=);
scanf(%d,e.num);
printf(姓名=);
scanf(%s,);
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-
文档评论(0)