数据结构实验题目.docx

上传人:b****5 文档编号:5037462 上传时间:2022-12-12 格式:DOCX 页数:9 大小:18.96KB
下载 相关 举报
数据结构实验题目.docx_第1页
第1页 / 共9页
数据结构实验题目.docx_第2页
第2页 / 共9页
数据结构实验题目.docx_第3页
第3页 / 共9页
数据结构实验题目.docx_第4页
第4页 / 共9页
数据结构实验题目.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

数据结构实验题目.docx

《数据结构实验题目.docx》由会员分享,可在线阅读,更多相关《数据结构实验题目.docx(9页珍藏版)》请在冰豆网上搜索。

数据结构实验题目.docx

数据结构实验题目

实验一线性表

1实验目的

通过选择下面四个题目之一进行实现,掌握如下内容:

Ø熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法

Ø学习指针、模板类、异常处理的使用

Ø掌握线性表的操作的实现方法

Ø学习使用线性表解决实际问题的能力

2实验内容

2.1题目1

根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。

线性表存储结构(五选一):

1、带头结点的单链表

2、不带头结点的单链表

3、循环链表

4、双链表

5、静态链表

线性表的基本功能:

1、构造:

使用头插法、尾插法两种方法

2、插入:

要求建立的链表按照关键字从小到大有序

3、删除

4、查找

5、获取链表长度

6、销毁

7、其他:

可自行定义

编写测试main()函数测试线性表的正确性。

2.2题目2

利用线性表实现一个通讯录管理,通信录的数据格式如下:

structDataType

{

intID;//编号

charname[10];//姓名

charch;//性别

charphone[13];//电话

charaddr[31];//地址

};

要求:

Ø实现通讯录的建立、增加、删除、修改、查询等功能

Ø能够实现简单的菜单交互,即可以根据用户输入的命令,选择不同的操作。

Ø能够保存每次更新的数据(选作)

Ø能够进行通讯录分类,比如班级类、好友类、黑名单等等(选作)

Ø编写测试main()函数测试线性表的正确性

2.3题目3

利用线性表实现一个一元多项式Polynomial

f(x)=a0+a1x+a2x2+a3x3+…+anxn

提示:

Polynomial的结点结构如下:

structterm

{

floatcoef;//系数

intexpn;//指数

};

可以使用链表实现,也可以使用顺序表实现。

要求:

Ø能够实现一元多项式的输入和输出

Ø能够进行一元多项式相加

Ø能够进行一元多项式相减

Ø能够计算一元多项式在x处的值

Ø能够计算一元多项式的导数(选作)

Ø能够进行一元多项式相乘(选作)

Ø编写测试main()函数测试线性表的正确性

2.4题目4

利用循环链表实现约瑟夫问题的求解。

约瑟夫问题如下:

已知n个人(n>=1)围坐一圆桌周围,从1开始顺序编号。

从序号为1的人开始报数,顺时针数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规则重复下去,直到所有人全部出列。

请问最后一个出列的人的编号。

3代码要求

1、必须要有异常处理,比如删除空链表时需要抛出异常;

2、保持良好的编程的风格:

Ø代码段与段之间要有空行和缩近

Ø标识符名称应该与其代表的意义一致

Ø函数名之前应该添加注释说明该函数的功能

Ø关键代码应说明其功能

实验二栈和队列

1实验目的

通过选择下面五个题目之一进行实现,掌握如下内容:

Ø进一步掌握指针、模板类、异常处理的使用

Ø掌握栈的操作的实现方法

Ø掌握队列的操作的实现方法

Ø学习使用栈解决实际问题的能力

Ø学习使用队列解决实际问题的能力

2实验内容

2.1题目1

根据栈和队列的抽象数据类型的定义,按要求实现一个栈或一个队列。

要求:

1、实现一个共享栈

2、实现一个链栈

3、实现一个循环队列

4、实现一个链队列

编写测试main()函数测试线性表的正确性。

2.2题目2

利用栈结构实现八皇后问题。

八皇后问题19世纪著名的数学家高斯于1850年提出的。

他的问题是:

在8*8的棋盘上放置8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列、同一斜线上。

请设计算法打印所有可能的摆放方法。

提示:

1、可以使用递归或非递归两种方法实现

2、实现一个关键算法:

判断任意两个皇后是否在同一行、同一列和同一斜线上

2.3题目3

利用栈结构实现迷宫求解问题。

迷宫求解问题如下:

心理学家把一只老鼠从一个无顶盖的大盒子的入口赶进迷宫,迷宫中设置很多隔壁,对前进方向形成了多处障碍,心理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口,测试算法的迷宫如下图所示。

提示:

1、可以使用递归或非递归两种方法实现

2、老鼠能够记住已经走过的路,不会反复走重复的路径

3、可以自己任意设置迷宫的大小和障碍

4、使用“穷举求解”的方法

2.4题目4

设计一个算术四则运算表达式求值的简单计算器。

表达式求值是程序设计语言编译中最近本的问题,它要求把一个表达式翻译成能够直接求值的序列。

基本要求:

1、输入中缀表达式能够转化成后缀表达式,比如输入中缀表达式

“(A+B)*C”,输出“AB+C*”

2、操作数使用单字母变量A、B、C等表示,操作符仅为+、-、*、/、(和);

3、能够对变量A、B、C等赋值,得出正确的计算结果

2.5题目5

利用队列结构实现车厢重排问题。

车厢重排问题如下:

一列货车共有n节车厢,每个车厢都有自己的编号,编号范围从1~n。

给定任意次序的车厢,通过转轨站将车厢编号按顺序重新排成1~n。

转轨站共有k个缓冲轨,缓冲轨位于入轨和出轨之间。

开始时,车厢从入轨进入缓冲轨,经过缓冲轨的重排后,按1~n的顺序进入出轨。

缓冲轨按照先进先出方式,编写一个算法,将任意次序的车厢进行重排,输出每个缓冲轨中的车厢编号。

提示:

1、一列火车的每个车厢按顺序从入轨进入不同缓冲轨,缓冲轨重排后的进入出轨,重新编排成一列货车。

比如:

编号为3的车厢进入缓冲轨1,则下一个编号小于3的车厢则必须进入下一个缓冲轨2,而编号大于3的车厢则进入缓冲轨1,排在3号车厢的后面,这样,出轨的时候才可以按照从小到大的顺序重新编排。

3代码要求

1、必须要有异常处理,比如删除空链表时需要抛出异常;

2、保持良好的编程的风格:

Ø代码段与段之间要有空行和缩近

Ø标识符名称应该与其代表的意义一致

Ø函数名之前应该添加注释说明该函数的功能

Ø关键代码应说明其功能

3、递归程序注意调用的过程,防止栈溢出

 

实验三树

1实验目的

通过选择下面两个题目之一进行实现,掌握如下内容:

Ø掌握二叉树基本操作的实现方法

Ø了解赫夫曼树的思想和相关概念

Ø学习使用二叉树解决实际问题的能力

2实验内容

2.1题目1

根据二叉树的抽象数据类型的定义,使用二叉链表实现一个二叉树。

二叉树的基本功能:

1、二叉树的建立

2、前序遍历二叉树

3、中序遍历二叉树

4、后序遍历二叉树

5、按层序遍历二叉树

6、求二叉树的深度

7、求指定结点到根的路径

8、二叉树的销毁

9、其他:

自定义操作

编写测试main()函数测试线性表的正确性

2.2题目2

利用二叉树结构实现赫夫曼编/解码器。

基本要求:

1、初始化(Init):

能够对输入的任意长度的字符串s进行统计,统计每个字符的频度,并建立赫夫曼树

2、建立编码表(CreateTable):

利用已经建好的赫夫曼树进行编码,并将每个字符的编码输出。

3、编码(Encoding):

根据编码表对输入的字符串进行编码,并将编码后的字符串输出。

4、译码(Decoding):

利用已经建好的赫夫曼树对编码后的字符串进行译码,并输出译码结果。

5、打印(Print):

以直观的方式打印赫夫曼树(选作)

6、计算输入的字符串编码前和编码后的长度,并进行分析,讨论赫夫曼编码的压缩效果。

测试数据:

IlovedataStructure,IloveComputer。

IwilltrymybesttostudydataStructure.

提示:

1、用户界面可以设计为“菜单”方式:

能够进行交互。

2、根据输入的字符串中每个字符出现的次数统计频度,对没有出现的

字符一律不用编码。

3代码要求

1、必须要有异常处理,比如删除空链表时需要抛出异常;

2、保持良好的编程的风格:

Ø代码段与段之间要有空行和缩近

Ø标识符名称应该与其代表的意义一致

Ø函数名之前应该添加注释说明该函数的功能

Ø关键代码应说明其功能

3、递归程序注意调用的过程,防止栈溢出

实验四排序

1实验目的

通过选择下面两个题目之一,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况。

2实验内容

2.1题目1

使用简单数组实现下面各种排序算法,并进行比较。

排序算法:

1、插入排序

2、希尔排序

3、冒泡排序

4、快速排序

5、简单选择排序

6、堆排序(选作)

7、归并排序(选作)

8、基数排序(选作)

9、其他

要求:

1、测试数据分成三类:

正序、逆序、随机数据

2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。

3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作)

4、对2和3的结果进行分析,验证上述各种算法的时间复杂度

编写测试main()函数测试线性表的正确性。

2.2题目2

使用链表实现下面各种排序算法,并进行比较。

排序算法:

1、插入排序

2、冒泡排序

3、快速排序

4、简单选择排序

5、其他

要求:

1、测试数据分成三类:

正序、逆序、随机数据

2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。

3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作)

4、对2和3的结果进行分析,验证上述各种算法的时间复杂度

编写测试main()函数测试线性表的正确性

3代码要求

1、必须要有异常处理,比如删除空链表时需要抛出异常;

2、保持良好的编程的风格:

Ø代码段与段之间要有空行和缩近

Ø标识符名称应该与其代表的意义一致

Ø函数名之前应该添加注释说明该函数的功能

Ø关键代码应说明其功能

3、递归程序注意调用的过程,防止栈溢出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1