《数据结构》实验1
- 格式:doc
- 大小:48.00 KB
- 文档页数:4
《数据结构与算法》第1次实验题目及要求
实验一:线性表、队列与栈及其操作算法
一、实验内容
1.建立包括头结点和3个结点(4,2,1)的单链表,实现单链表建立、插入、删除和顺序
查找等基本操作。
2.编程用一维数组来模拟一个栈,实现入栈和出栈操作,解决括号匹配问题。
3.编程用一维数组来模拟一个队列,实现入队列和出队列操作,解决杨辉三角问题。
二、实验要求
1.掌握单链表的各种运算(表内结点的插入﹑删除,输出单链表等)。
2.掌握栈的结构和算法应用。
3.掌握队列的结构和算法应用。
三、实验报告要求
实验报告使用教务处统一印制的《武汉理工大学学生实验报告书》,主要包括:
1) 实验预习报告:
主要包括下列内容:
[1] 实验目的和意义。
[2] 问题描述:包括目标、任务、条件和约束的描述。
[3] 实验原理与方法:阐述所使用的方案的工作原理。
[4] 实验方案和技术路线,包括:数据结构设计和核心算法设计描述、主模块及功能模块层
次结构、主要功能模块的输入、输出和算法框架描述、功能模块之间的调用与被调用关系等
内容。
2) 实验过程记录:
主要包括下列内容:
[1] 上机实验的调试过程,包括编译时出现的错误信息、错误分析、解决方法和解决过程。
[2] 上机实验的测试过程,包括测试范例,测试结果,测试结果的分析与讨论,测试过程中
遇到的主要问题及所采用的解决措施。
[3] 软件使用说明:主要描述如何使用你的程序以及使用时的主要事项。
[4] 实验输出结果。
3) 结果与讨论:
主要包括下列内容:
[1] 实验结果分析:对本次实验进行分析和评价。
[2] 小结、建议和体会:说明程序的改进思想、经验和体会。
[3] 思考题:回答教师布置的讨论题。
[4] 程序清单:根据教师的要求,以电子文档形式或者打印附件形式提交所设计的程序清单。
要求:
1、 用Visual C++ 上机编程,请预习VC++软件;
2、 本要求适用后面两个实验;
3、 请同学们做实验时把课本带来,需要借助书上的例子;
4、 不能在课堂上完成的,自己课后完成,然后将课后完成的结果运行给老师看。
实验题目及要求:
1、 实验题目为课本实验题2.1—2.4,3.1—3.4;
2、 要求同学每8人为一组,分别按学号选择2.1—2.4及3.1—3.4其中的一题。
课本P56:线性表
实验题2.1 编写一个程序algo2-1.cpp,实现顺序表结构的各种基本运算,并在此基础上
设计一个主程序完成如下功能:
(1) 初始化顺序表L;
(2) 依次采用尾插入法插入啊,a,b,c,d,e元素;
(3) 输出顺序表L;
(4) 输出顺序表L长度;
(5) 判断顺序表L是否为空;
(6) 输出顺序表L的第3个元素;
(7) 输出元素‘a’的位置;
(8) 在第四个元素位置上插入‘f’元素;
(9) 输出顺序表L;
(10) 删除L的第3个元素;
(11) 输出顺序表L;
(12) 释放顺序表L。
实验题2.2 编写一个程序algo2-2.cpp,实现单链表的各种基本运算,并在此基础上设计
一个主程序完成如下功能:
(1) 初始化单链表h;
(2) 依次采用尾插法插入a,b,c,d,e元素;
(3) 输出单链表h;
(4) 输出单链表h长度;
(5) 判断单链表h是否为空;
(6) 输出单链表h的第3个元素;
(7) 输出元素‘a’的位置;
(8) 在第4个元素位置上插入‘f’元素;
(9) 输出单链表h;
(10) 删除L的第3个元素;
(11) 输出单链表h;
(12) 释放单链表h。
实验题2.3 编写一个程序algo2-3.cpp,实现双链表的各种基本运算,并在此基础上设计
一个主程序完成如下功能:
(1) 初始化双链表h;
(2) 依次采用尾插法插入a,b,c,d,e元素;
(3) 输出双链表h;
(4) 输出双链表h长度;
(5) 判断双链表h是否为空;
(6) 输出双链表h的第3个元素;
(7) 输出元素‘a’的位置;
(8) 在第4个元素位置上插入‘f’元素;
(9) 输出双链表h;
(10) 删除L的第3个元素;
(11) 输出双链表h;
(12) 释放双链表h。
实验题2.4 编写一个程序algo2-4.cpp,实现循环链表的各种基本运算,并在此基础上设
计一个主程序完成如下功能:
(1) 初始化循环链表h;
(2) 依次采用尾插法插入a,b,c,d,e元素;
(3) 输出循环链表h;
(4) 输出循环链表h长度;
(5) 判断循环链表h是否为空;
(6) 输出循环链表h的第3个元素;
(7) 输出元素‘a’的位置;
(8) 在第4个元素位置上插入‘f’元素;
(9) 输出循环链表h;
(10) 删除L的第3个元素;
(11) 输出循环链表h;
(12) 释放循环链表h。
课本P88:栈和队列
实验题3.1 编写一个程序algo3-1.cpp,实现顺序栈的各种基本运算,并在此基础上设计
一个主程序完成如下功能:
(1) 初始化栈s;
(2) 判断栈s是否非空;
(3) 依次进栈元素a,b,c,d,e;
(4) 判断栈s是否非空;
(5) 输出栈长度;
(6) 输出从栈顶到栈底的元素;
(7) 输出出栈序列;
(8) 判断栈s是否非空;
(9) 释放栈。
实验题3.2 编写一个程序algo3-2.cpp,实现链栈的各种基本运算,并在此基础上设计一
个主程序完成如下功能:
(1) 初始化链栈s;
(2) 判断链栈s是否非空;
(3) 依次进栈元素a,b,c,d,e;
(4) 判断链栈s是否非空;
(5) 输出链栈长度;
(6) 输出从栈顶到栈底的元素;
(7) 输出出链栈序列;
(8) 判断链栈s是否非空;
(9) 释放链栈。
实验题3.3 编写一个程序algo3-3.cpp,实现顺序环形队列的各种基本运算,并在此基
础上设计一个主程序完成如下功能:
(1) 初始化队列q;
(2) 判断队列q是否非空;
(3) 依次进栈元素a,b,c;
(4) 出队一个元素,输出该元素;
(5) 输出队列q的元素个数;
(6) 依次进队列元素d,e,f;
(7) 输出队列q的元素个数;
(8) 输出出队序列;
(9) 释放队列。
实验题3.4 编写一个程序algo3-4.cpp,实现链队的各种基本运算,并在此基础上设计一
个主程序完成如下功能:
(1) 初始化链队q;
(2) 判断链队q是否非空;
(3) 依次进栈元素a,b,c;
(4) 出队一个元素,输出该元素;
(5) 输出链队q的元素个数;
(6) 依次进链队元素d,e,f;
(7) 输出链队q的元素个数;
(8) 输出出队序列;
(9) 释放链队。