数据结构实验报告
更新时间:2023-11-28 02:34:01 阅读量: 教育文库 文档下载
数据结构实验报告
一、实验题目
1.实现线性表的各种基本运算 2.实现单链表的各种基本运算 3.合并两个单链表 二、实验目的
1.熟悉将算法转换为程序代码的过程。
2.了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的C语言描述方法。
3.熟练掌握顺序表的基本运算:查找、插入、删除等,掌握顺序表的随机存储特性。 4.了解线性表的链式存储结构,熟练掌握线性表的链式存储结构的C语言描述方法。 5.熟练掌握线性链表的基本运算:查找、插入、删除等,能在实际应用中灵活选择适当的链表结构。 三、实验要求
1.熟悉顺序表的插入、删除和查找 2.熟悉单链表的插入、删除和查找 四、实验内容
(1)实现顺序表的各种基本运算 抽象数据类型的定义:
我设计的顺序表包含的基本操作为:插入、删除、查找,基本功能为:构造一个空的顺序表。
存储结构定义及算法思想:
存储结构为:顺序表 数据元素类型为:整型 主要函数算法的实现思路:
A.插入: 一般情况下,在第i个元素之前插入一个元素时, 需将第n至第i(共n-i+1个元素)依次向后移动一个位置。在进行插入操作时 ,还需考虑两种情况,第一,插入位置的正确性,第二如果原表已满,需要为顺序表重新分配存储空间。
B.删除:一般情况下,删除第i个元素时,需将从第i+1至第n个元素(共n-i个元素)依次向前移动一个位置。进行删除操作前,只需考虑删除的位置是否合理,不需要考虑容量问题。
C.查找:基本操作是“进行两个元素之间的比较”,若L中存在和e相同的元素ai则比较次数为i,否则为L.length. 实验结果与分析:
运行截图:
插入操作:
删除操作:
查找操作:
心得体会:
在做顺序表的基本操作实验时,遇到很多问题,首先我做的第一步是看书,把书上的代码都看懂,在看顺序表存储结构的定义时,里面有两个变量,一个listsize,一个length,分别代表的是顺序表的存储容量(以sizeof(ElemType)为单位)和当前长度,当时没有注意到length是指的当前长度,所以脑子里面一直以为length=listsize*sizeof(ElemType),后来发现不对,才注意到length是指的当前长度,单位和listsize一致,大小小于等于listsize。还有一个地方就是书上在编写插入功能时有一条语句q=&(L.elem[i-1]);我看了以后不太懂,因为L.elem显然是一个指针,里面存放的地址,但是L.elem[i-1],这种写法,我还不是很熟悉,基本上没有见过,所以我就去网上查找了一下,后来明白了它的意思,并在程序中给出了注释,便于理解。注释如下://elem[i-1]等价于*(elem+i-1),特别注意这点,表示的意思是顺序表中第i个元素,前面加取地址后赋给q,即q指向了顺序表的第i个元素,这里q表示一个指针变量。所以以后看书还是要细心,仔细的去琢磨,不要留模糊的东西。
第二步我做的是将书上的代码敲到VC里面去,敲过去后,我编译了一下,发现了很多问题,包括一系列的未定义,错误等语法问题,然后仔细的看了一下书,书上写的基本都是伪代码,里面用到的一些变量,很多都没用定义,还有一些字符,需要用#define去定义,所以我在看懂了代码的基础上进行了第三步。
第三步我做的就是将书上的伪代码编写成完整的程序,包括头文件的定义,如基本输入输出函数#include
(2)实现单链表的各种基本运算
抽象数据类型的定义:
我设计的顺序表包含的基本操作为:插入、删除、查找,基本功能为:构造一个空的单链表。
存储结构定义及算法思想:
存储结构为:单链表 数据元素类型为:整型 主要函数算法的实现思路:
A.插入: 为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中。关键的算法语句如下:s->next=p->next;p->next=s;
B.删除:删除元素时,仅需修改结点a的指针,假设p为指向结点a的指针,则修改指针的语句为:p->next=p->next->next;
C.查找:在函数中,给出要查找的元素值,要求查找出元素的位置,采用指针后移位的方式,即p=p->next;来遍历单链表进行查找。 实验结果与分析:
插入元素:
删除元素:
查找元素:
心得体会:
有了之前顺序表的经验,这次单链表的代码敲的很快,首先是熟练度有所提升,另外, 哪里需要注意什么,哪里需要定义,在把书上的代码敲上去的时候,就已经会补充了, 所以整个代码基本上是一次完成,编译后的错误也很快的能够找到。 (3)实现作业题3
作业题3,我在前面编写的单链表的基础上稍加修改了一下,这里不再过多的描述,直接给出实验结果运行:
首先是利用之前的函数,创建了两个新的链表,并给两个新链表分别赋值,接着就编写了一个合并链表的函数,将两个链表合并起来,如图运行所示。
附录:
1.顺序表重要源代码
#include
typedef int ElemType ; typedef int Status ; #define OVERFLOW 0 #define OK 1 #define ERROR 0 //宏定义
#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct { ElemType *elem; //存储空间基地址,用于malloc函数分配存储空间接受地址 int length; //顺序表长度 int listsize; //分配的存储容量,以ElemType类型为单位 }SqList;
//顺序表的存储结构定义 //函数声明:
Status InitList_Sq(SqList &L); //构造一个空的线性表
Status ListInsert_Sq(SqList &L,int i,ElemType e);
//顺序表元素的插入运算
Status ListDelete_Sq(SqList &L,int i,ElemType &e); //顺序表元素的删除运算
Status compare(ElemType x, ElemType y); //比较函数
Status ListEmpty(SqList &L); Status ListLength(SqList &L); Status DestroyList(SqList &L); Status ClearList(SqList &L);
int LocateElem_Sq(SqList L,ElemType e,Status (* compare)(ElemType ,ElemType)); //顺序表元素的查找
以上这些是将伪代码补充成完整程序的重要部分,包括一些函数的定义,头文件的包含,宏定义等等,没有这些,伪代码是不可能变成执行程序的,而关于删除,插入,查找的具体函数体,因为是照书本敲出(自己也将书本函数体里没定义的变量一一定义了)这里不再给出。我的整个程序的结构就是三部分:
定义
Void main(); 函数体();
由于比较多,重要的函数体部分和书上的一样,所以不方便将整个程序全部附上。 2.单链表的重要源代码:
有了顺序表的经验,单链表的前面的一些定义也基本上和顺序表差不多,函数体也是书上的完善,这里不再给出。 3.作业题3:
作业题3我在单链表的基础上修改了一下,保留了插入元素功能,增加了合并功能,所以这里贴出合并函数体。
void MergeList(LinkList &ha,LinkList &hb,LinkList &hc) { LinkList pa, pb;pa=ha; pb=hb; while(pa->next && pb->next) { pa=pa->next; pb=pb->next; } if(!pa->next) { hc=hb; while(pb->next) pb=pb->next; pb->next=ha->next; } else { hc=ha; while(pa->next) pa=pa->next; pa->next=hb->next; } }
正在阅读:
数据结构实验报告11-28
资讯类网站有哪些02-19
家庭社会学复习题题库04-15
联合竞拍能否分割办理不动产权证书05-13
实验二04-19
抢书风波作文500字07-11
公司和公司法概述03-30
2012学校后勤工作计划06-02
中小学艺术教育课程实施策略研究05-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据结构
- 实验
- 报告
- 高中议论文训练学案:学会分析事例,避免以叙代议
- “十三五”重点项目-女皮靴项目可行性研究报告 - 图文
- 大学物理空气比热容的测量实验报告
- 商业POP - 图文
- 外研版高中英语单词必修六、英语
- 大工18春《船舶制图》在线作业2
- 行政法学作业一
- 新课程理论教师职业道德试题及答案选择题试题
- 2018年秋部编人家版九年级上册道德与法治知识点梳理 第七课 中华一家亲
- 教科版三年级科学上第二单元1-7课练习题、单元练习题及参考答案
- 04-北京国际俱乐部公寓康乐中心工程施工组织设计
- 材料科学基础考研大纲解析
- 探析现代城市广场的发展态势
- 论监狱人民警察队伍建设
- 2019届高三一轮复习经济生活核心考点15 我国的分配制度
- 病理生理学第三章 水电解质代谢紊乱
- 带钢厂650轧机电控系统改造-精品
- 小学美术浙人美版 六年级下册 第9课《纸塑》优质课公开课教案教师资格证面试试讲教案
- 土力学习题
- 病理学试题库及答案