数据结构实验报告.docxVIP

  • 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)

1亿VIP精品文档

相关文档