
数据结构
刘下来邦我吧
最不好惹的一只猫
展开
-
4027计数排序
描述有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键字比该记录的关键字小。假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。请编写算法实现计数排序。输入多组数据,每组数据两行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为正整数)。当n等于0时,原创 2021-12-01 13:13:04 · 370 阅读 · 0 评论 -
4026基于快排思想的查找
描述借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。设此组记录存放于数组r[l..n]中。若查找成功,则输出该记录在r数组中的位置及其值,否则显示“not find”信息。输入多组数据,每组数据三行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为正整数),第三行为要查找的key值。当n等于0时,输入结束。输出每组数据输出一行。如果查找成功,输出key在数组中的位置(1到n)和key的值,两个数字之间用空格隔开。如果查找失败,输出“原创 2021-12-01 13:12:10 · 2516 阅读 · 1 评论 -
4025数组的正负排序
描述对n个关键字取整数值的记录序列进行整理,以使所有关键字为负值的记录排在关键字为非负值的记录之前,要求:①采用顺序存储结构,至多使用一个记录的辅助存储空间;②算法的时间复杂度为O(n)。输入多组数据,每组数据两行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为整数)。当n等于0时,输入结束。输出每组数据输出一行,为排序后的序列。每两个元素之间用空格隔开。输入样例 161 2 3 4 -1 25-1 2 3 -2 4输出样例 1.原创 2021-12-01 13:11:27 · 995 阅读 · 0 评论 -
4024砾石的交换排序
描述设有顺序放置的n个桶,每个桶中装有一粒砾石,每粒砾石的颜色是红,白,蓝之一。要求重新安排这些砾石,使得所有红色砾石在前,所有白色砾石居中,所有蓝色砾石居后,重新安排时对每粒砾石的颜色只能看一次,并且只允许交换操作来调整砾石的位置。输入多组数据,每组数据两行。第一行为砾石的数量n,第二行有n个字母,代表每个砾石的颜色(字母之间用空格分隔,R代表红色,W代表白色,B代表蓝色)。当n等于0时,输入结束。输出每组数据输出一行。为重新排序后的砾石序列。每两个字母之间用空格隔开。输入样例 1原创 2021-12-01 13:10:24 · 1448 阅读 · 0 评论 -
4023基于双向链表的双向冒泡排序法
描述有n个记录存储在带头结点的双向链表中,利用双向冒泡排序法对其按上升序进行排序,请写出这种排序的算法。(注:双向冒泡排序即相邻两趟排序向相反方向冒泡)。输入多组数据,每组数据两行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为正整数)。当n等于0时,输入结束。输出每组数据输出一行,为从小到大排序后的序列。每两个元素之间用空格隔开。输入样例 154 5 3 2 961 3 5 7 9 20输出样例 12 3 4 5 91 2 3.原创 2021-12-01 13:08:28 · 1851 阅读 · 1 评论 -
4022基于链表的简单选择排序
描述试以单链表为存储结构,实现简单选择排序算法。输入多组数据,每组数据两行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为正整数)。当n等于0时,输入结束。输出每组数据输出一行,为从小到大排序后的序列。每两个元素之间用空格隔开。输入样例 154 5 3 2 961 3 5 7 9 20输出样例 12 3 4 5 91 2 3 5 7 9//基于链表的简单选择排序#include <iostream>#de.原创 2021-12-01 13:07:13 · 627 阅读 · 0 评论 -
4021基于链地址法的散列表的删除
描述请写出在散列表中删除关键字为k的一个记录的算法,设散列函数为H,H(key)=key%13,解决冲突的方法为链地址法。输入多组数据,每组三行,第一行为待输入的关键字的个数n,第二行为对应的n个关键字,第三行为需要删除的关键字k。当n=0时输入结束。输出每组数据输出用链地址法处理冲突的散列表。输入样例 151 4 2 3 5341 10 14 27140输出样例 101 12 234 45 5678910111201 1 .原创 2021-12-01 13:05:48 · 1141 阅读 · 0 评论 -
4020基于链地址法的散列表的插入
描述请写出在散列表中插入关键字为k的一个记录的算法,设散列函数为H,H(key)=key%13,解决冲突的方法为链地址法。输入多组数据,每组三行,第一行为待输入的关键字的个数n,第二行为对应的n个关键字,第三行为需要插入的关键字k。当n=0时输入结束。输出每组数据输出用链地址法处理冲突的散列表。输入样例 151 4 2 3 5642 5 8 15180输出样例 101 12 23 34 45 56 678910111201.原创 2021-12-01 13:05:02 · 1482 阅读 · 0 评论 -
4019平衡二叉树的高度的计算
描述假设一棵平衡二叉树的每个结点都标明了平衡因子b,设计一个算法,求平衡二叉树的高度。输入多组数据,每组数据一行,为平衡二叉树的先序序列。输入的数字为该节点的平衡因子。当序列为“#”时,输入结束。输出每组数据输出一行,为平衡二叉树的高度。输入样例 1110###0##1110###0##10####输出样例 134//平衡二叉树的高度的计算#include <iostream>using namespace std;typedef st.原创 2021-11-30 22:22:59 · 1167 阅读 · 0 评论 -
4018基于非递归的二叉排序树的结点的查找和插入
描述已知二叉树T的结点形式为(llink,data,count,rlink),在树中查找值为x的结点,若找到,则计数(count)加1;否则,作为一个新结点插入树中,插入后仍为二叉排序树。请写出其非递归算法。输入多组数据,每组数据3行。第一行为二叉排序树的结点数n,第二行为空格分隔的n个数字,对应二叉排序树中的n个结点,第三行为查找的值x。n=0时输入结束。输出每组数据输出两行。第一行为二叉排序树的中序序列(空格分隔),第二行为其对应的计数count。输入样例 151 2 .原创 2021-11-30 22:19:58 · 1514 阅读 · 0 评论 -
4017二叉排序树的限定条件下的数据输出
描述已知二叉排序树采用二叉链表存储结构,根结点的指针为T,链结点的结构为(lchild,data,rchild),其中lchild、rchild分别指向该结点左,右孩子的指针,data域存放结点数据。试编写算法,从小到大输出二叉排序树中所有数值大于等于x的结点的数据。要求先找到第一个满足条件的结点后,再依次输出其他满足条件的结点。输入多组数据,每组三行。第一行为二叉排序树的结点数n。第二行为空格分隔的n个数字,对应二叉排序树中的n个结点。第三行为一个数字x。n=0时输入结束。输出每组数据原创 2021-11-30 20:22:25 · 1107 阅读 · 0 评论 -
4016二叉排序树的判定
描述假设二叉树每个结点的元素均为一个单字符,根据给定的字符序列按照先序遍历的顺序递归创建该树的二叉链表,然后判断该二叉树是否为二叉排序树。输入多组数据,每组数据有一行。每行为一个二叉树对应的前序序列(其中‘#’表示空树)。当序列为“#”时,输入结束。输出每组数据输出1行,若此二叉树为二叉排序树则输出“YES”,否则输出“NO”。输入样例 1ba##c##ca##b###输出样例 1YESNO//二叉排序树的判定#include <iostream.原创 2021-11-29 22:01:06 · 728 阅读 · 0 评论 -
4015基于递归的折半查找
描述请编写一个递归的折半查找算法,查找给定有序数组中的某一元素。输入多组数据,每组数据有三行。第一行为数组长度n,第二行为n个递增排列的数字,第三行为需要查找的数字k。当n=0时输入结束。输出每组数据输出一行,如果可以找到数字,则输出“YES”,否则输出“NO”。输入样例 151 4 6 7 8661 2 5 7 9 10080输出样例 1YESNO//基于递归的折半查找#include <iostream>using name.原创 2021-11-29 21:40:49 · 664 阅读 · 0 评论 -
4014基于邻接表的长度为k的简单路径的求解
描述一个连通图采用邻接表作为存储结构。设计一个算法,判断无向图中任意给定的两点是否存在一条长度为k的简单路径。输入多组数据,每组m+3数据行。第一行有两个数字n,m和k,代表有n个顶点,m条边和长度k。第二行有n个字符,代表n个顶点的编号。第三行到第m+2行每行有两个字符h和p,代表边依附的两个顶点。每条边的长度为1。第m+3行有两个字符d和f,代表需要判断的两个字符。输出每组数据输出一行。若存在路径输出“YES”,反之输出“NO”。输入样例 13 2 2abcabbc.原创 2021-11-29 21:23:29 · 940 阅读 · 0 评论 -
4013基于深度优先搜索的两顶点路径存在与否的判断
描述设计一个算法,试基于深度优先搜索判断以邻接表方式存储的有向图中是否存在由顶点vi输入多组数据,每组m+3数据行。第一行有两个数字n和m,代表有n个顶点和m条边。第二行有n个字符,代表n个顶点的编号。第三行到第m+2行每行有两个字符h和k,代表边依附的两个顶点。第m+3行有两个字符vi和vj,代表需要判断的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出一行。若存在路径输出“YES”,反之输出“NO”。输入样例 13 2abcabbcac4 2bcsw.原创 2021-11-29 21:09:16 · 956 阅读 · 0 评论 -
4012最长的最短路径的求解
描述设计一个算法,求图G中距离顶点v的最短路径长度最大的一个顶点。输入多组数据,每组数据m+2行。每组数据第一行为两个整数n和m,代表有n个顶点m条路。顶点编号为1到n。第二行到第m+1行每行有三个整数a,b和c,代表顶点a和顶点b之间有一条长度为c的路。第m+2有一个整数v,代表顶点v。当n和m都等于0时,输入结束。输出每组数据输出两行。第一行为最短路径最长的顶点编号c,第二行为两点的最短距离d。输入样例 14 41 2 12 3 13 4 12 4 144 3.原创 2021-11-29 19:59:27 · 1727 阅读 · 0 评论 -
4011基于邻接表的深度优先遍历
描述一个连通图采用邻接表作为存储结构。设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程。输入多组数据,每组m+2数据行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个整数h和k,代表边依附的两个顶点。第m+2行有一个整数d,代表从d开始遍历。当n和m都等于0时,输入结束。输出每组数据输出一行,为深度优先搜索的遍历结果。每两个数字之间用空格隔开。输入样例 13 21 21 312 11 220 0输出样.原创 2021-11-29 15:06:43 · 2919 阅读 · 0 评论 -
4010基于邻接矩阵的边的删除
描述给定一个无向图,在此无向图中删除一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表删除的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为删除边后的邻接矩阵。每两个数字之间用空格隔开。输入样例 13 21 22 33 23 11 21 20 0输出样例 10 1 2 31 0 .原创 2021-11-28 21:30:45 · 509 阅读 · 0 评论 -
4009基于邻接表的边的删除
描述给定一个无向图,在此无向图中删除一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表删除的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为删除边后的邻接表。每两个数字之间用空格隔开。输入样例 13 21 22 33 23 11 21 20 0输出样例 11 22 1312.原创 2021-11-28 21:28:45 · 1226 阅读 · 0 评论 -
4008基于邻接矩阵的新边的增加
描述给定一个无向图,在此无向图中增加一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表增加的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为增加边后的邻接矩阵。每两个数字之间用空格隔开。输入样例 13 21 22 33 13 11 21 30 0输出样例 10 1 2 31 0 1.原创 2021-11-28 21:27:55 · 584 阅读 · 0 评论 -
4007基于邻接表的新边的增加
描述给定一个无向图,在此无向图中增加一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表增加的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为增加边后的邻接表。每两个数字之间用空格隔开。输入样例 13 21 22 33 13 11 21 30 0输出样例 11 3 22 3 13.原创 2021-11-28 21:27:07 · 820 阅读 · 0 评论 -
4006基于邻接矩阵的顶点的删除
描述给定一个无向图,在此无向图中删除一个顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表删除的顶点编号。当n和m都等于0时,输入结束。输出每组数据输出n-1行。为删除顶点后的邻接矩阵。每两个数字之间用空格隔开。输入样例 13 21 22 312 11 220 0输出样例 10 2 32 0 13 1 00.原创 2021-11-28 21:25:50 · 1075 阅读 · 0 评论 -
4005基于邻接表的顶点的删除
描述给定一个无向图,在此无向图中删除一个顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表删除的顶点编号。当n和m都等于0时,输入结束。输出每组数据输出n-1行。为删除顶点后的邻接表。每两个数字之间用空格隔开。输入样例 13 21 22 312 11 220 0输出样例 12 33 21//基于邻接表的.原创 2021-11-28 21:24:31 · 1604 阅读 · 0 评论 -
4004基于邻接矩阵的新顶点的增加
描述给定一个无向图,在此无向图中增加一个新顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表新插入的顶点编号。当n和m都等于0时,输入结束。输出每组数据输出n+1行。为增加顶点后的邻接矩阵。每两个数字之间用空格隔开。输入样例 13 21 22 342 11 240 0输出样例 10 1 2 3 41 0 1 0.原创 2021-11-28 21:23:31 · 1094 阅读 · 0 评论 -
4003基于邻接表的新顶点的增加
描述给定一个无向图,在此无向图中增加一个新顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表新插入的顶点编号。当n和m都等于0时,输入结束输出每组数据输出n+1行。为增加顶点后的邻接表。每两个数字之间用空格隔开。输入样例 13 21 22 342 11 240 0输出样例 11 22 3 13 241 2.原创 2021-11-28 21:21:58 · 590 阅读 · 0 评论 -
4002六度空间理论
描述“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。输入多组数据,每组数据m+1行。第一行有两个数字n和m,代表有n个人和m组朋友关系。n个人的编号为1到n。第二行到第m+1行每行包括两个数字a和b,代表这两个人互相认识。当n和m都等于0原创 2021-11-28 21:20:38 · 712 阅读 · 0 评论 -
4001基于Dijsktra算法的最短路径求解
描述一张地图包括n个城市,假设城市间有m条路径(有向图),每条路径的长度已知。给定地图的一个起点城市和终点城市,利用Dijsktra算法求出起点到终点之间的最短路径。输入多组数据,每组数据有m+3行。第一行为两个整数n和m,分别代表城市个数n和路径条数m。第二行有n个字符,代表每个城市的名字。第三行到第m+2行每行有两个字符a和b和一个整数d,代表从城市a到城市b有一条距离为d的路。最后一行为两个字符,代表待求最短路径的城市起点和终点。当n和m都等于0时,输入结束。输出每组数据输出两行。原创 2021-11-26 21:22:44 · 915 阅读 · 1 评论 -
2016迷宫问题(简化DFS算法)
描述密密被困在一个迷宫里,迷宫有n个路口,编号为1-n。密密现在站在第一个路口,出口编号为m。先给出每个路口通向何处,问密密能否逃出迷宫。输入多组数据,每组数据n+2行。第一行为一个正整数n代表路口的个数,之后n行,这n行中的第i行为第i个路口的向左路口、向前路口、向右路口。最后一行为一个正整数m代表迷宫的终点。当n=0时输入结束。输出每组数据输出一行,若密密能走出迷宫,输出“YES”,否则输出“NO”。输入样例 160 2 03 5 60 0 40 0 00 0 .原创 2021-11-14 17:22:37 · 1181 阅读 · 0 评论 -
KMP算法
描述 连续多组输入两个字符串a与b,如果b是a的子串,就输出YES,否则输出NO,a与b都只输入字符串“0”,程序终止输入输出可以自己想哦KMP基本思想: 按照传统的BF算法,我们如果要对字符串s1=dababcde与s2=abc进行模式匹配(求是否是子串),要从s1与s2的第一位开始比价,s1[0]=d不等于s2[0]=a,然后往后s1[1]=a等于s2[0]=a,s1[2]=b等于s2[1]=b,s1[3]=a不等于s2[2]=c,那么s2又要从0开始,s1更是...原创 2021-11-14 16:21:52 · 513 阅读 · 0 评论 -
3011基于二叉树的表达式求值
描述输入一个表达式(表达式中的数均为小于10的正整数),利用二叉树来表示该表达式,创建表达式树,然后利用二叉树的遍历操作求表达式的值。输入多组数据。每组数据一行,为一个表达式,表达式以‘=’结尾。当输入只有一个“=”时,输入结束。输出每组数据输出一行,为表达式的值。输入样例 12*(2+5)=1+2==输出样例 1143前言对于这个题,我看到很多人的做法是用栈去代替递归的过程。你光用栈也能算出答案,题目让我们用二叉树算,...原创 2021-11-12 10:46:01 · 5151 阅读 · 2 评论 -
3010基于二叉链表的二叉树高度的计算
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度。输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据分别输出一行,为二叉树的高度。输入样例 1abcd00e00f00ig00h00abd00e00cf00g000输出样例 143//基于二叉链表的二叉树高度的计算 #include <iostream&g.原创 2021-11-11 14:53:43 · 377 阅读 · 0 评论 -
3009基于二叉链表的二叉树结点个数的统计
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别对二叉树的结点(度为0、1、2)个数进行统计。输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行,每行三个数分别为二叉树的度为0、1、2的结点个数。每两个数用空格分隔。输入样例 1abcd00e00f00ig00h00abd00e00cf00g000输出样例 15 0 4.原创 2021-11-11 14:49:30 · 861 阅读 · 0 评论 -
3008基于二叉链表的二叉树的遍历
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别实现二叉树的先序、中序和后序遍历。输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出三行,为二叉树的先序、中序和后序序列。输入样例 1abcd00e00f00ig00h00abd00e00cf00g000输出样例 1abcdefighdcebfagihdecfbghia.原创 2021-11-11 14:39:55 · 1075 阅读 · 0 评论 -
3007基于二叉链表的二叉树叶子结点到根结点的路径的求解
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出每个叶子结点到根结点的路径。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出n行(n为叶子结点的个数),每行为一个叶子结点到根节点的路径(按照叶子结点从左到右的顺序)。输入样例 1abcd00e00f00ig00h00abd00e00cf00g000输出样例 1dcbaecba.原创 2021-11-11 14:27:10 · 1077 阅读 · 0 评论 -
3006基于二叉链表的二叉树最长路径的求解
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行,第一行为二叉树的最长路径长度,第二行为此路径上从根到叶结点的各结点的值。输入样例 1abcd00e00f00ig00h00abd00e00cf00g000输出样例 14abcd3abd//.原创 2021-11-11 14:15:39 · 1191 阅读 · 0 评论 -
3005基于二叉链表的二叉树最大宽度的计算
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法计算该二叉树的最大宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行。为二叉树的最大宽度。输入样例 1abcd00e00f00ig00h00abd00e00cf00g000输出样例 144//基于二叉链表的二叉树最大.原创 2021-11-11 13:59:41 · 551 阅读 · 2 评论 -
3004基于二叉链表的二叉树的双序遍历
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法实现该二叉树的双序遍历(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行,为双序遍历法得到的二叉树序列。输入样例 1ab000ab00c000输出样例.原创 2021-11-11 13:36:26 · 240 阅读 · 0 评论 -
2011Ackermann函数的非递归求值(栈实现 能跑大数字)
描述 无输入多组数据,每组数据有一行,为两个整数m和n。当m和n都等于0时,输入结束。输出每组数据输出一行,为Ack(m,n)。输入样例 12 13 53 100 0输出样例 152538189//Ackermann函数的非递归求值#include <iostream>using namespace std;typedef struct{ int *V; int top; int bottom;}SqStac...原创 2021-11-10 23:17:08 · 347 阅读 · 0 评论 -
3003基于二叉链表的二叉树左右子树的交换
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行。为交换左右孩子后的二叉树的先序序列。输入样例 1abcd00e00f00ig00h00abd00e00cf00g000输出样例 1aihgbfcedacgfbed//基于二叉链表的二叉树左右孩子的.原创 2021-11-10 23:03:01 · 1413 阅读 · 0 评论 -
3002基于二叉链表的树结构相等的判断
描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,按此方法创建两棵二叉树,然后编写递归算法判断这两棵树是否相等。输入多组数据,每组数据有两行。每行为一个二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行。若两个二叉树相等输出“YES”,否则输出“NO”。输入样例 1abcd00e00f00ig00h00abcd00e00f00ig00h00abd00e00cf00g00abd00e.原创 2021-11-10 22:59:26 · 723 阅读 · 0 评论