数据结构实验报告Word格式.docx

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

数据结构实验报告Word格式.docx

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

数据结构实验报告Word格式.docx

计算机与通信工程学院

【实验内容】

1.线性表:

算法Josephust(约瑟夫环)

约瑟夫(Joseph)问题的一种描述是:

编号1,2,……,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。

一开始任选一个正整数作为报数上限值m,从第1人开始按顺时针方向自1开始报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。

试设计一个程序求出出列顺序。

测试数据

m的初值为20;

n=7,7个人的密码依次为:

3,1,7,2,4,8,4,首先m值为6。

正确的出列顺序为6,1,4,7,2,3,5

算法描述:

定义一个线性表,分别输入玩游戏的人数n,最大报数限度m以及n个人的密码,从表中第一个人开始遍历,如果m>

n,则再次从第一个人开始遍历,直至数到第m人后删除其结点,并输出它的位置及密码,最后只剩一个结点时输出它的位置和密码,程序结束。

流程图:

2.堆栈:

①程序进制转换②程序括号配对

①使用栈实现十进制数到各种不同进制数的数制转换。

②判断算术表达式中的三种括号“{[()]}”是否配对。

①算法描述:

构造一个空栈,若输入N<

0,则重新输入。

当输入值不为零,将F=F/N入栈,n=F%N。

出栈,输出n。

②算法描述:

构造一个空栈并初始化,当P指向左括号时,入栈。

当P指向右括号时,与栈顶相比较,如果匹配则将顶层元素出栈,继续遍历;

不匹配则返回错误。

最后如果栈不为空,则结束。

3.猴子分桃

动物园里的n只猴子编号为1,2,……,n,依次排成一队等待饲养员按规则分桃。

动物园的分桃规则是每只猴子可分得m个桃子,但必须排队领取。

饲养员循环的每次取出1个,2个,……,k个桃子放入筐里,由排在队首的猴子领取。

单次放入筐中的桃子数达到k时,又重新从1开始。

当筐中的桃子数加上队首猴子已取得的桃子数不超过m时,队首的猴子可以取得筐中现有的全部桃子。

取得桃子总数不足m个的猴子,继续到队尾排队等候。

当筐中的桃子数加上队首猴子已取得的桃子数超过m时,队首的猴子只能取满m个,然后离开队列,筐中剩余的桃子由下一只猴子取用。

上述分桃过程一直进行到每只猴子都分到m个桃子。

实验任务:

对于给定的n、k和m,模拟上述猴子分桃过程。

数据输入:

由文件input.txt给出输入数据。

第1行是3个正整数n、k和m,分别表示有n只猴子,每次最多取k个桃到筐中,每只猴子最终都分到m个桃子。

结果输出:

将分桃过程中每只猴子离开队列的次序依次输出到文件output.txt。

算法描述:

构造一个空队列,n只猴子每次最多放入k个桃子,每个猴子应分到m个桃子。

当队列不为空时,由第一个猴子开始取,如果筐中桃子不足k个,则放入i+1个桃子。

如果猴子领到的桃子不足m个,则在队尾排队。

直到队列为空时,程序结束

流程图:

4.算法StrReplace(串的替换)

串的置换算法。

编写一个实现串的置换操作Replace(&

S,T,V)的算法。

对一个字符串S,使用一个长度小于S的串V替换S的子串T,并将替换后的串输出。

算法描述:

输入字符串输入原始字符串S[i],待替换的字符T[i],替换为的字符串V[i]。

比较S与T的长度,如果S<

T,重新输入;

如果S>

T,在S中搜索T。

比较T与V的长度。

T>

V,S后面的字符向前移动i个位置;

T<

V,则向后移动i位。

最后将新串复制到S中并输出。

流程图:

5.中序遍历二叉树并统计叶子节点个数

输入格式(方括号内,带空格):

【ABCDEGF】

①构造一个二叉树T,如果T为空,则遍历完成;

如果不为空,则先访问左子树,在访问根节点,最后访问右子树。

判断是否遍历完成,如果已完成,则程序结束;

如果未完成,则再从左子树开始访问。

②构造一个二叉树,如果T为空,则遍历完成,叶子数为0;

不为空,则判断左右子树是否为空,不为空则叶子数+1。

6.图的邻接矩阵生成法并打印邻接矩阵

输入:

①顶点数、边数、0用空格隔开

②依次输入顶点编号(123...)

③依次输入边例:

123回车空格隔开

将连通图用二维数组以矩阵的形式存储。

若A点到B点在图中有路径,权值为C,则对应矩阵表示为G.arcs[A][B]=C。

当为无向图时,输入权值再令G.arcs[B][A]=C。

若两点之间没有路径,则为0。

7.二叉排序树结点删除算法

例子输出为:

创建树,三种排序输出

删除三个结点后,三种排序输出

从二叉排序树中删除结点p,并重接它的左子树或右子树;

若右子树为空则只需接它的左子树;

若左子树为空则只需重接它的右子树,即将需删除的结点赋值给q,p->

lchild(rchild),然后释放q;

如果左右子树均不为空,则先找到要删除的结点左子树上的最大的结点或右子树上的最小结点为s,再将s赋值给p,重接*p的左子树或右子树,最后删除s。

8.快速排序划分算法

输入十个数的任意数组,通过选择1~5排序

常量N=10,可自行修改

用子表的第一个数据作为枢轴记录关键字。

当low<

high时,则枢轴与high交换位置;

党low>

high时,枢轴与low交换位置。

当low=high时,枢轴记录到位,返回枢轴位置,即完成一次排序。

然后递归重复操作,直至排序完成。

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

当前位置:首页 > 工作范文 > 行政公文

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

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