- 0
- 0
- 约4.96千字
- 约 9页
- 2026-02-11 发布于江苏
- 举报
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY
数据结构
实验报告
实验项目
实验一
实验类别
基础篇
学生姓名
宋大超
学生学号
201501149
完成日期
2016-10-9
指导教师
袁科
实验成绩
评阅日期
评阅教师
实验一线性表基本操作的编程实现
【实验目的】
线性表基本操作的编程实现
要求:
线性表基本操作的编程实现(2学时,验证型),掌握线性表的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、逆序、排序等操作,存储结构可以在顺序结构或链表结构中任选,可以完成部分主要功能,也可以用菜单进行管理完成大部分功能。还鼓励学生利用基本操作进行一些更实际的应用型程序设计。
【实验性质】
验证性实验(学时数:2H)
【实验内容】
把线性表的顺序存储和链表存储的数据插入、删除运算其中某项进行程序实现。建议实现键盘输入数据以实现程序的通用性。为了体现功能的正常性,至少要编制遍历数据的函数。
【注意事项】
1.开发语言:使用C。
2.可以自己增加其他功能。
【实验分析,说明过程】
本次实验主要是检验单链表数据的插入与删除。实验的第一部分是要求将学生e的信息插入到第i个学生的前面,也就是在两个节点之间建立新的节点。我们此次实验有两个要求。第一个是将一个新的学生信息插入到原来的学生信息当中去。第二个要求是要删除一个学生的信息。以下我将通过示意图和文字的方式说明这次实验的完成方法。需要说明的是此处的i表示学生信息的一个序号元素。
在第i个学生信息插入时,就得把第i个学生之后的所有节点依次向后移动一个位置。在将新的节点X插入到第i的位置。
1
Stu[1]
2
Stu[2]
3
Stu[3]
4
Stu[4]
n
Stu[n]
1
Stu[1]
2
Stu[2]
3
Stu[3]
4
Stu[4]
5
e
n
Stu[n]
【实验小结】
重难点
对于我来说由于基础不够扎实,所以最难理解应该是此次实验里面关于length的理解,我觉得此次实验的关于数据的插入与删除算法上的理解很容易,也简单。主要是关于其中的length有很多不明白的地方。最开始定义的时候int型。而这里的length既可以作为一种指针,也可以作为一种长度,及相当于数组的下标。只要理解了length,整个实验就好做了。
心得与体会
由于基本功不扎实,导致在做实验的时候遇到很多的困难,好在在之后的询问中,也大概理解了之前的问题。通过这次实验,使我对C语言相关知识理解更加透彻明了,特别是对指针、结构体的理解使我见识到指针的强大与灵活性。以前在C语言上的欠债我觉得我会补起来的。
收获
我觉得此次最大的收获就是关于结构体指针的理解。结构体指针的应用太广泛了,几乎贯穿整个数据结构的全本书,所以,对于指针的理解和应用非常重要。为此我将不懈努力学好C语言这门课。
【实验代码】
#includestdio.h
#includestdlib.h
#includeconio.h
#defineMAXSIZE100//根据需要自己设定一个班级能够容纳的最大学生数
typedefstructstu
{
intnum; //学生学号
charname[10];//学生姓名
floatscore; //学生成绩
}STUDENT; //存放单个学生信息的结构体类型
typedefstructlist
{
STUDENTstu[MAXSIZE];//存放学生的数组定义,静态分配空间
intlength; //记录班级实际学生个数
}LIST; //存放班级学生信息的顺序表类型
voidlistcreate(LIST*Li,intm)
//初始化班级的学生信息
//m为该班级的初始人数
{
inti;
Li-length=0;
for(i=1;i=m;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].score); //输入第i个学生的成绩
Li-length++; //学生人数加1
}
}
intlistinsert(LIST*Li,inti)
原创力文档

文档评论(0)