2022年数据结构实验题目 .pdf

上传人:Q****o 文档编号:25942576 上传时间:2022-07-14 格式:PDF 页数:6 大小:58.17KB
返回 下载 相关 举报
2022年数据结构实验题目 .pdf_第1页
第1页 / 共6页
2022年数据结构实验题目 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年数据结构实验题目 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构实验题目 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验一 线性表1 实验目的通过选择下面四个题目之一进行实现,掌握如下内容: 熟悉C+ 语言的基本编程方法,掌握集成编译环境的调试方法 学习指针、模板类、异常处理的使用 掌握线性表的操作的实现方法 学习使用线性表解决实际问题的能力2 实验内容2.1题目1根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。线性表存储结构(五选一):1、 带头结点的单链表2、 不带头结点的单链表3、 循环链表4、 双链表5、 静态链表 线性表的基本功能:1、 构造:使用头插法、尾插法两种方法2、 插入:要求建立的链表按照关键字从小到大有序3、 删除4、 查找5、 获取链表长度6

2、、 销毁7、 其他:可自行定义编写测试 main() 函数测试线性表的正确性。2.2题目2利用线性表实现一个通讯录管理,通信录的数据格式如下:struct DataType int ID; / 编号 char name10; / 姓名 char ch; / 性别 char phone13; / 电话 char addr31; / 地址; 要求: 实现通讯录的建立、增加、删除、修改、查询等功能 能够实现简单的菜单交互,即可以根据用户输入的命令,选择不同的操作。 能够保存每次更新的数据(选作) 能够进行通讯录分类,比如班级类、好友类、黑名单等等(选作) 编写测试 main() 函数测试线性表的正确

3、性2.3题目3利用线性表实现一个一元多项式Polynomial f(x) = a0 + a1x + a2x2 + a3x3 + . + anxn 提示: Polynomial的结点结构如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - struct term float coef; /系数 int expn; /指数 ; 可以使用链表实现,也可以使用顺序表实现。要求: 能够实现一元多项式的输入和输出 能够进行一元多项式相加 能

4、够进行一元多项式相减 能够计算一元多项式在 x处的值 能够计算一元多项式的导数(选作) 能够进行一元多项式相乘(选作) 编写测试 main() 函数测试线性表的正确性2.4题目4利用循环链表实现约瑟夫问题的求解。约瑟夫问题如下:已知n个人(n=1)围坐一圆桌周围,从 1开始顺序编号。从序号为1的人开始报数,顺时针数到m 的那个人出列;他的下一个人又从1开始报数,数到 m 的那个人又出列;依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的编号。3代码要求 1、必须要有异常处理,比如删除空链表时需要抛出异常;2、保持良好的编程的风格: 代码段与段之间要有空行和缩近 标识符名称应该与其代表

5、的意义一致 函数名之前应该添加注释说明该函数的功能 关键代码应说明其功能实验二 栈和队列1 实验目的通过选择下面五个题目之一进行实现,掌握如下内容: 进一步掌握指针、模板类、异常处理的使用 掌握栈的操作的实现方法 掌握队列的操作的实现方法 学习使用栈解决实际问题的能力 学习使用队列解决实际问题的能力2 实验内容2.1题目1根据栈和队列的抽象数据类型的定义,按要求实现一个栈或一个队列。 要求:1、 实现一个共享栈2、 实现一个链栈3、 实现一个循环队列4、 实现一个链队列编写测试 main() 函数测试线性表的正确性。2.2题目2名师资料总结 - - -精品资料欢迎下载 - - - - - -

6、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 利用栈结构实现八皇后问题。 八皇后问题 19世纪著名的数学家高斯于 1850年提出的。他的问题是:在8*8的棋盘上放置8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列、同一斜线上。请设计算法打印所有可能的摆放方法。提示: 1、可以使用递归或非递归两种方法实现2、实现一个关键算法:判断任意两个皇后是否在同一行、同一列和同一斜线上2.3题目3利用栈结构实现迷宫求解问题。迷宫求解问题如下:心理学家把一只老鼠从一个无顶盖的大盒子的入口赶

7、进迷宫,迷宫中设置很多隔壁,对前进方向形成了多处障碍,心理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口,测试算法的迷宫如下图所示。提示: 1、可以使用递归或非递归两种方法实现 2、老鼠能够记住已经走过的路,不会反复走重复的路径 3、可以自己任意设置迷宫的大小和障碍 4、使用穷举求解 的方法2.4题目4设计一个算术四则运算表达式求值的简单计算器。表达式求值是程序设计语言编译中最近本的问题,它要求把一个表达式翻译成能够直接求值的序列。基本要求:1、 输入中缀表达式能够转化成后缀表达式,比如输入中缀表达式(A+B)*C ,输出AB+C*2、操作数使用单字母变量 A、B、C

8、等表示,操作符仅为 +、-、*、/ 、(和);3、能够对变量 A、B、C 等赋值,得出正确的计算结果2.5题目5 利用队列结构实现车厢重排问题。车厢重排问题如下:一列货车共有 n节车厢,每个车厢都有自己的编号,编号范围从1n。给定任意次序的车厢,通过转轨站将车厢编号按顺序重新排成1n。转轨站共有 k个缓冲轨,缓冲轨位于入轨和出轨之间。开始时,车厢从入轨进入缓冲轨,经过缓冲轨的重排后,按1n的顺序进入出轨。缓冲轨按照先进先出方式,编写一个算法,将任意次序的车厢进行重排,输出每个缓冲轨中的车厢编号。提示:1、 一列火车的每个车厢按顺序从入轨进入不同缓冲轨,缓冲轨重排后的进入出轨,重新编排成一列货车

9、。比如:编号为3的车厢进入缓冲轨 1,则下一个编号小于 3的车厢则必须进入下一个缓冲轨 2,而编号大于 3的车厢则进入缓冲轨 1,排在3号车厢的后面,这样,出轨的时候才可以按照从小到大的顺序重新编排。3代码要求 1、必须要有异常处理,比如删除空链表时需要抛出异常;2、保持良好的编程的风格: 代码段与段之间要有空行和缩近 标识符名称应该与其代表的意义一致 函数名之前应该添加注释说明该函数的功能 关键代码应说明其功能 3 、递归程序注意调用的过程,防止栈溢出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -

10、 - - - 第 3 页,共 6 页 - - - - - - - - - 实验三 树1 实验目的通过选择下面两个题目之一进行实现,掌握如下内容: 掌握二叉树基本操作的实现方法 了解赫夫曼树的思想和相关概念 学习使用二叉树解决实际问题的能力2 实验内容2.1 题目1根据二叉树的抽象数据类型的定义,使用二叉链表实现一个二叉树。 二叉树的基本功能:1、二叉树的建立2、前序遍历二叉树3、中序遍历二叉树4、后序遍历二叉树5、按层序遍历二叉树6、求二叉树的深度7、求指定结点到根的路径8、二叉树的销毁9、其他:自定义操作编写测试 main() 函数测试线性表的正确性2.2题目2利用二叉树结构实现赫夫曼编/

11、解码器。基本要求:1、 初始化(Init):能够对输入的任意长度的字符串s进行统计,统计每个字符的频度,并建立赫夫曼树2、 建立编码表 (CreateTable) :利用已经建好的赫夫曼树进行编码,并将每个字符的编码输出。3、 编码(Encoding) :根据编码表对输入的字符串进行编码,并将编码后的字符串输出。4、 译码(Decoding) :利用已经建好的赫夫曼树对编码后的字符串进行译码,并输出译码结果。5、 打印(Print):以直观的方式打印赫夫曼树(选作)6、 计算输入的字符串编码前和编码后的长度,并进行分析,讨论赫夫曼编码的压缩效果。测试数据: I love data Struct

12、ure, I love Computer. I will try my best to studydata Structure. 提示: 1、用户界面可以设计为 菜单方式:能够进行交互。 2、根据输入的字符串中每个字符出现的次数统计频度,对没有出现的字符一律不用编码。3代码要求 1、必须要有异常处理,比如删除空链表时需要抛出异常;2、保持良好的编程的风格: 代码段与段之间要有空行和缩近名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - -

13、- 标识符名称应该与其代表的意义一致 函数名之前应该添加注释说明该函数的功能 关键代码应说明其功能 3 、递归程序注意调用的过程,防止栈溢出实验四 排序1 实验目的通过选择下面两个题目之一,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况。2 实验内容2.1 题目1使用简单数组实现下面各种排序算法,并进行比较。排序算法: 1、插入排序 2、希尔排序3、冒泡排序4、快速排序5、简单选择排序6、堆排序(选作)7、归并排序(选作)8、基数排序(选作)9、其他要求:1、测试数据分成三类:正序、逆序、随机数据2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其

14、中关键字交换计为3次移动)。 3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作) 4 、对2和3的结果进行分析,验证上述各种算法的时间复杂度编写测试 main() 函数测试线性表的正确性。2.2 题目2使用链表实现下面各种排序算法,并进行比较。排序算法: 1、插入排序 2、冒泡排序3、快速排序4、简单选择排序5、其他要求:1、测试数据分成三类:正序、逆序、随机数据2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。 3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作) 4 、对2和3的结果进行分析,验

15、证上述各种算法的时间复杂度编写测试 main() 函数测试线性表的正确性3代码要求 1、必须要有异常处理,比如删除空链表时需要抛出异常;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 2、保持良好的编程的风格: 代码段与段之间要有空行和缩近 标识符名称应该与其代表的意义一致 函数名之前应该添加注释说明该函数的功能 关键代码应说明其功能 3 、递归程序注意调用的过程,防止栈溢出?北京邮电大学计算机中心第1页名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁