《算法与数据结构》计算机数据结构与算法_计算机-数据结构与算法.pdf
《《算法与数据结构》计算机数据结构与算法_计算机-数据结构与算法.pdf》由会员分享,可在线阅读,更多相关《《算法与数据结构》计算机数据结构与算法_计算机-数据结构与算法.pdf(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、算法与数据结构实验报告 学院 _ 专业 _ 姓名 _ 学号 _ 实验 1 线性表的操作(12 学时)问题描述 假设一个班级内有 n 个学生,定义一个学生类和一个班级类。学生类中包括学号、姓名、性 别、年龄、专业等属性;班级类包括一个学生对象链表。定义如下:class Stude nt int id;/学号 char name20;/姓名 int age;/年龄/请设置学生类中相应的操作 class MyClass Stude nt*stu_head;/链表表头指针 int total;/学生总数 char man ager20;班主任姓名/public:MyClass()创建新班,学生数为 0
2、 void insertStu(Student s);/在班内中插入学生 s,插入后保持学号没有重复并且按学号递 增 void deleteStu(int i);/删除学号为 i的学生 void display();/显示班内所有学生的信息和其它信息 void search(int i);按照学号 i查找学生,并输出其信息 void search(char*s);/按照姓名查找学生,如果有重名的学生,则输出所有学生 void join(MyClass&class2);II 将 class2 班合并到本班,合并后保证学号没有重复并且按 学号递增 void seperate(MyClass&c1,
3、MyClass&c2);II 按照性别分成两个班 cl 和 c2 II其它方法 实验目的(1)掌握链表的基本操作。(2)熟练类的定义以及类之间的关系 实验内容及要求(1)实现 MyClass 类中所列出的方法;(2)编写主函数测试类中的方法。算法与数据结构实验报告 学院 _ 专业 _ 姓名 _ 学号 _ 实验 2:利用栈将中缀表达式转换为后缀表达式并进行计算(3 学时)问题描述 中缀表达式是最普通的一种书写表达式的方式,而后缀表达式不需要用括号来表示,计算 机可简化对后缀表达式的计算过程,而该过程又是栈的一个典型应用。实验目的(1)深入理解栈的特性。(2)掌握栈结构的构造方法。实验内容及要求(
4、1)中缀表达式中只包含+、一、x、/运算及(和)。(2)可以输入任意中缀表达式,数据为一位整数。(3)显示中缀表达式及转换后的后缀表达式(为清楚起见,要求每输出一个数据用逗 号隔开)。生类和一个班级类学生类中包括学号姓名性别年龄专业等属性班级类包括一个学生对象链表定义如下学号姓名年龄请设置学生类中相应的操作链表表头指针学生总数班主任姓名创建新班学生数为在班内中插入学生插入后保持学号没照姓名查找学生如果有重名的学生则输出所有学生将班合并到本班合并后保证学号没有重复并且按学号递增按照性别分成两个班和其它方法实验目的掌握链表的基本操作熟练类的定义以及类之间的关系实验内容及要求实现类中所列后缀表达式并
5、进行计算学时问题描述中缀表达式是最普通的一种书写表达式的方式而后缀表达式不需要用括号来表示计算机可简化对后缀表达式的计算过程而该过程又是栈的一个典型应用实验目的深入理解栈的特性掌握栈结构的构(4)对转换后的后缀表达式进行计算。例如输入:中缀表达式:6+3*(9-7)-8/2 输出:转换后的后缀表达式为:6,3,9,7,-,*,+,8,2,-计算结果为:8 算法与数据结构实验报告 学院 _ 专业 _ 姓名 _ 学号 _ 实验 3:行编辑程序问题(3 学时)问题描述 一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。由于用户在终端 上进行输入时,不能保证不出差错,因
6、此,若在编辑程序中,“每接受一个字符即存入用户数据区”的做法显然不是 最恰当的。较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区。允许用 户输入出差错,并在发现有误时可以及时更正。例如,当用户发现刚刚键入的一个字符是错的时,可补进一个退格符#,以表示前一个字符无效;如果发现当前键入的行内差错较多或难以补救,则可以键入一个退行符”,以表示 当前行中的字符均无效。如果已经在行首继续输入#符号无效。实验目的(1)深入理解栈的特性。(2)掌握使用递归实现某些问题。(3)设计出应用栈解决在实际问题背景下对较复杂问题的递归算法。实验内容及要求(1)实现简单行编辑器,可以
7、输入一个多行的字符序列。但行字符总数(包含退格符和退行 符)不大于 250。(2)利用顺序栈保存从终端接收的字符,每行回车时显示经过编辑的本行字符,生类和一个班级类学生类中包括学号姓名性别年龄专业等属性班级类包括一个学生对象链表定义如下学号姓名年龄请设置学生类中相应的操作链表表头指针学生总数班主任姓名创建新班学生数为在班内中插入学生插入后保持学号没照姓名查找学生如果有重名的学生则输出所有学生将班合并到本班合并后保证学号没有重复并且按学号递增按照性别分成两个班和其它方法实验目的掌握链表的基本操作熟练类的定义以及类之间的关系实验内容及要求实现类中所列后缀表达式并进行计算学时问题描述中缀表达式是最普
8、通的一种书写表达式的方式而后缀表达式不需要用括号来表示计算机可简化对后缀表达式的计算过程而该过程又是栈的一个典型应用实验目的深入理解栈的特性掌握栈结构的构例如:用户输入为:voL#id mia#ai n()churchar ch;输出为:void mai n()char ch;算法与数据结构实验报告 学院 _ 专业 _ 姓名 _ 学号 _ 实验 4:队列的应用(6 学时)问题描述 实现一个简单银行叫号模拟系统。银行有三个窗口可以同时办理业务,当有用 户到达银行时,首先选择自己要办理的业务,可以选择一种或多种。系统计算办理 此业务所需的时间并显示给用户,然后系统查看有无空闲的窗口,如果有,通知用
9、 户到一个空闲窗口办理,如果没有空闲窗口,则需安排用户到某个窗口等候,系统 先计算每个队列中用户办理业务的总时间,将用户安排到时间最短的队列等候。模 拟输出多个用户办理业务的过程。输入举例如下:用户 1在时间 1到达银行,在 1号窗口办理业务,需要 1 分钟 用户 1在时间 2结束,离开 用户 2在时间 3达到。在 1 号窗口开始办理,办理业务需要 4分钟 用户 3 在时间 3到达,在2 号窗口开始办理,办理业务需要 5 分钟 用户 4在时间 5到达,在 3 号窗口开始办理,办理需要 8 分钟 生类和一个班级类学生类中包括学号姓名性别年龄专业等属性班级类包括一个学生对象链表定义如下学号姓名年龄
10、请设置学生类中相应的操作链表表头指针学生总数班主任姓名创建新班学生数为在班内中插入学生插入后保持学号没照姓名查找学生如果有重名的学生则输出所有学生将班合并到本班合并后保证学号没有重复并且按学号递增按照性别分成两个班和其它方法实验目的掌握链表的基本操作熟练类的定义以及类之间的关系实验内容及要求实现类中所列后缀表达式并进行计算学时问题描述中缀表达式是最普通的一种书写表达式的方式而后缀表达式不需要用括号来表示计算机可简化对后缀表达式的计算过程而该过程又是栈的一个典型应用实验目的深入理解栈的特性掌握栈结构的构用户 5在时间 6到达,在 1 号窗口等待,办理业需要 4分钟 用户 2在时间 8办理完业务,
11、离开 用户 5在时间 8在 1 号窗口,办理业需要 4 分钟 用户 6在时间 8到达,在 1 号窗口等待,办理业务需要 6分钟 用户 7在时间 8到达,在 2 号窗口等待,办理业务需要 10分钟 实验目的(1)深入理解队列的特性。(2)掌握使用队列实现某些问题。实验内容及要求 1 建立 3 个队列存储在三个窗口等待的用户 2建立业务类,描述业务种类,业务所需时间 3.建立用户类,描述用户办理的业务,用户的状态等 4可以随机产生用户进入银行的时间,让用户输入所需办理的业务 算法与数据结构实验报告 学院 _ 专业 _ 姓名 _ 学号 _ 实验 5:实现二叉树的基本操作(12 学时)问题描述 树和二
12、叉树是最常用的非线性结构(树型结构),其中以二叉树最为常见,本实验题要求实 现二叉树的最基本操作,其中遍历二叉树是二叉树各种操作的基础,它分为先序、中序和后序。实验目的(1)熟练掌握二叉树的结构特性。生类和一个班级类学生类中包括学号姓名性别年龄专业等属性班级类包括一个学生对象链表定义如下学号姓名年龄请设置学生类中相应的操作链表表头指针学生总数班主任姓名创建新班学生数为在班内中插入学生插入后保持学号没照姓名查找学生如果有重名的学生则输出所有学生将班合并到本班合并后保证学号没有重复并且按学号递增按照性别分成两个班和其它方法实验目的掌握链表的基本操作熟练类的定义以及类之间的关系实验内容及要求实现类中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法与数据结构 算法 数据结构 计算机
限制150内