# 数据结构实验
# 实验要求
# 采用单向环表实现约瑟夫环
- 从键盘输入整数 m,通过 create 函数生成一个具有 m 个结点的单向环表。环表中的结点编号依次为 1,2,……,m
- 从键盘输入整数 s(1<=s<=m)和 n,从环表的第 s 个结点开始计数为 1,当计数到第 n 个结点时,输出该第 n 结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到 n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止
- 例如,m=10,s=3,n=4。则输出序列为:6,10,4,9,5,2,1,3,8,7。
# 简单计算器
请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。要求
从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志
输入表达式中的数值均为大于等于零的整数。中间的计算过程如果出现小数也只取整
例如,输入:4+2*5= 输出:14
输入:(4+2)*(2-10)= 输出:-48
# 遍历二叉树
- 请输入一棵二叉树的扩展的前序序列,经过处理后生成一棵二叉树,然后对于该二叉树输出中序和后序遍历序列
- 按层次遍历二叉树
# 排序算法
输入 10 个数,编程实现插入排序、快速排序、选择排序三类算法
# 开始实验
# 实验一:单向环表实现约瑟夫环
代码
1 | cpp复制代码 |
文档
- 需求分析:实现一个单向环表,输入 m、s、n,按约瑟夫环规则输出节点编号。
- 概要设计:创建节点结构,定义创建和输出函数。
- 详细设计:详述了结构体、创建函数、输出函数及主函数的实现步骤。
- 调试分析:处理无输出问题和头结点地址更改问题。
- 测试结果:成功输出预期结果。
# 实验二:简单计算器
代码
1 | cpp复制代码 |
文档
- 需求分析:实现支持加减乘除、幂运算和括号优先级的简单计算器。
- 概要设计:定义栈结构和基本操作函数,编写括号匹配、优先级比较和基本运算函数。
- 详细设计:详细阐述了各函数的设计和实现,包括栈操作、括号匹配和基本运算。
- 调试分析:解决括号匹配和优先级处理中的错误。
- 测试结果:实现预期功能,正确处理表达式。
# 实验三:二叉树遍历
代码
1 | cpp复制代码 |
文档
- 需求分析:实现二叉树的扩展前序序列构建,并进行中序、后序和层次遍历。
- 概要设计:定义二叉树节点结构和构建函数,实现不同遍历方法。
- 详细设计:详细描述了二叉树的构建和遍历方法,包括中序、后序和层次遍历。
- 调试分析:解决输入处理和节点构建中的问题。
- 测试结果:成功实现二叉树遍历,输出预期结果。
# 实验四:排序算法
代码
1 | cpp复制代码#include <stdio.h> |
文档
- 需求分析:实现插入排序、快速排序和选择排序三种算法。
- 概要设计:定义排序算法函数和打印函数。
- 详细设计:详细描述了每种排序算法的实现步骤,包括插入排序、快速排序和选择排序。
- 调试分析:解决选择排序中 temp 值指代错误的问题。
- 测试结果:成功实现三种排序算法,输出预期结果。