
数据结构
文章平均质量分 66
数据结构
JYHZZ
这个作者很懒,什么都没留下…
展开
-
查找与排序 练习题
3."list采用链式结构存储,在C++ STL中的list采用双向链表存储,比较适合用快速排序进行排序,这是由快速排序不需要随机访问元素的特点决定的。本题考查的是对外排序的理解。比较次数最多的情况:逆序的情况,第一次循环,比较n-1次,第二次比较n-2次……2、有一组数据(15,9,7,8,20,-1,7,4),用堆排序的筛选方法建立的初始堆为。3、对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数最多为(。解析:稳定排序是每次排序得到的结果是唯一的,不稳定排序得到的结果不唯一。原创 2023-02-11 14:42:14 · 579 阅读 · 0 评论 -
查找 复习
折半查找的数据元素的查找过程,可以用二叉树来描述,这种描述查找过程的二叉树为判定树。时间复杂度O(log2(n))(待查找的表必须是有序的)(1)顺序表上的查找。原创 2023-02-09 10:07:36 · 166 阅读 · 0 评论 -
树结构 练习题
解析:画x轴,因为查找的范围是逐渐缩小的,如果出现了不是缩小的情况,就不对。解析:后序遍历是左右中,中序遍历是左中右,若该二叉树中的任何结点一定都无右孩子,则遍历顺序变为后序遍历是左中,中序遍历是左中,所以一样。解析:高度的绝对值小于等于1,即存在左子树的高度比其右子树的高度要低的情况。1-4 对AVL树中的任一结点,其左子树的高度一定比其右子树的高度要高。1-5 对AVL树中的任一结点,其右子树的高度一定比其左子树的高度要高。2-7 哈夫曼树是n个带权叶子结点构成的所有二叉树中(C)最小的二叉树。原创 2023-02-08 11:01:23 · 2398 阅读 · 0 评论 -
树结构 复习
(3)对于非空二叉树,若叶子结点数为n0,度数为2的结点数为n2,则n0=n2+1。(可以先设想 一个二叉树只有根节点,二叉树有一个叶节点,也就是这个根节点,没有度数为2的结点;如果对这个根节点同时添加左孩子与右孩子,这样叶节点+1,度数为2的结点+1)(5)编号为i的结点,当2*i不超过范围时,左孩子为2*i;(空树,只有根节点,有左子树,有右子树,有左右子树)(1) 一棵非空二叉树的第i层上最多有2的i-1次方个结点。(2)深度为k的二叉树中,最多有2的k次方-1个结点。原创 2023-02-06 11:28:41 · 632 阅读 · 0 评论 -
堆排序,建初始堆以及优先队列(priority_queue)
std::priority_queue:在优先队列中,优先级高的元素先出队列,并非按照先进先出的要求,类似一个堆(heap)。Container必须是用数组实现的容器,比如 vector, deque. STL里面默认用的是vector. 比较方式默认用operator< , 所以如果把后面两个参数缺省的话,优先队列就是大顶堆,队头元素最大。greater 对应于结构的类型,greater< int>()对应于没有参数且返回类型更大的函数的类型。top( ) //返回优先队列的队顶元素。原创 2022-12-29 10:36:07 · 2013 阅读 · 0 评论 -
7-3 顺序存储的二叉树的最近的公共祖先问题
设顺序存储的二叉树中有编号为i和j的两个结点,请设计算法求出它们最近的公共祖先结点的编号和值。输入第1行给出正整数n(≤1000),即顺序存储的最大容量;第2行给出n个非负整数,其间以空格分隔。其中0代表二叉树中的空结点(如果第1个结点为0,则代表一棵空树);第3行给出一对结点编号i和j。题目保证输入正确对应一棵二叉树,且1≤i,j≤n。如果i或j对应的是空结点,则输出,其中是i或j中先发现错误的那个编号;否则在一行中输出编号为i和j的两个结点最近的公共祖先结点的编号和值,其间以1个空格分隔。输出样例原创 2022-12-04 19:59:37 · 156 阅读 · 0 评论 -
7-4 树的遍历
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输出样例:代码:没啥好说的,后序与中序遍历恢复二叉树不会的看这个:4-14 还原二叉树&&4-15 根据后序和中序遍历输出先序遍历层次遍历不会的看这个:二叉树的层序遍历 专题原创 2022-12-04 19:47:50 · 120 阅读 · 0 评论 -
7-2 树种统计
随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入首先给出正整数N(≤105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。输出样例:代码1:知识点1:getline()函数c++中的cin和getline()函数知识点2:mapc++中map详解原创 2022-12-04 19:44:37 · 111 阅读 · 0 评论 -
c++中的cin和getline()函数
cin 输入接触到第一个非空格字符时开始阅读,当遇到下一个空格字符(空格、制表符、换行符)时就会停止读取, cin 输入接触到第一个非空格字符时开始阅读:当遇到下一个空格字符(空格、制表符、换行符)时就会停止读取: 为了避免cin对于空白符的忽略问题,可以用getline函数:getline函数可以读取整行,包括前面和中间的空格,并将其存储在字符串对象中。在头文件#include中,是普通函数,有四种重载形式。读取的istream是作为参数 is 传进函数的,读取的字符串保存在s原创 2022-12-04 19:38:22 · 8929 阅读 · 2 评论 -
5 - 2 单选题
森林是0棵或有限棵不相交的树的集合,比如森林中有3棵树,那么每棵树的结点数比边数多1,那么三棵树的总结点数就比总边数多3。假设一个图有n个顶点,那么如果任意两个顶点之间都有边的话,该图就称为完全图,有n(n-1)/2 条边。对n个数进行哈夫曼编码,那么就有n个叶结点,n-1个非叶结点,相加得115,即2*n-1=115,n=58。对于一棵非空二叉树,有这样的性质,若叶子结点数为a,度数为2的节点数为b,那么a=b+1。对于森林,若叶子结点数为N,度数为2的节点数为M,那么N-M=树的个数。原创 2022-11-29 11:00:52 · 3067 阅读 · 0 评论 -
5 - 1 判断题
(61-1)/2=30,即第6层有30个结点有左右孩子,有1个结点有1个孩子,第六层有2的5次方个结点,也就是32个,那么第6层没有孩子的结点有32-30-1=1个,这个结点是叶节点之一。完全二叉树:一棵深度为k的有n个结点的二叉树,对其结点按从上至下,从左至右的顺序进行编号,如果编号为i的结点与满二叉树中编号为i的结点在二叉树的位置相同,则这棵二叉树为完全二叉树。第7层的每2个结点是第6层的1个结点的左右孩子,因为61是奇数,所以最后还剩下一个结点对应第6层的一个结点。高度增加的情况:1,2,3,4。原创 2022-11-23 18:50:10 · 5256 阅读 · 0 评论 -
数据结构与算法 树 课后习题 选择题部分
一个具有n个结点的二叉树用二叉链表存储,那么有2n个指针域,其中有n-1个指针域用来存储结点孩子的位置,另外n+1个结点存放的是空指针。当k=9时,最多有 (2的9次方)-1 个结点,,即512-1=511个结点,第9层有256个结点,第1---8层共有255个结点。结点*p没有孩子代表着结点p的左孩子指向该节点的前驱结点,p的右孩子指向该结点的后继结点,故ltag与rtag均为1,B对。第10层上的每两个结点是第9层的一个结点的两个孩子,所以第9层中有490/2=245个结点有两个孩子,其余结点无孩子。原创 2022-11-11 18:45:00 · 4134 阅读 · 0 评论 -
4-13 先序输出叶结点
其中BinTree};函数应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符。原创 2022-11-05 11:04:29 · 129 阅读 · 0 评论 -
4-11 Isomorphic
T1andT2, areifT1T2T1如果T1可以通过交换T1中(一些)节点的左右子节点而转换为T2,那么T1和T2这两棵树是同构的。例如,图1中的两棵树就是同构的,因为如果交换了A、B和G的子节点而不是其他节点的子节点,它们是相同的。给出一个多项式时间算法来判断两棵树是否同构。whereTreeT1andT2如果T1和T2确实同构,则函数应该返回1,否则返回0。原创 2022-11-05 10:51:15 · 373 阅读 · 0 评论 -
二叉树的层序遍历 专题
链接:https://leetcode.cn/problems/average-of-levels-in-binary-tree。解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入:root = [3,9,20,null,null,15,7](即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)因此返回 [3, 14.5, 11]。返回⼀个由每层节点平均值组成的数组。原创 2022-11-05 09:38:40 · 262 阅读 · 0 评论 -
树 - > 选择
BA.空或只有一个结点B.高度等于其结点数C.任一结点无左孩子D.任一结点无右孩子A:前序与后序遍历是一样的C:任意结点无左孩子,那么前序遍历结果是ABC,后序遍历结果是CBADA.ABCB.BACC.CBAD.CABCA.ABCDEFGB.ABDFEGCC.ABDFECGD.ABDEFCGA.NRLB.RNLC.LRND.RLNA.①④B.②④C.①②③D.②③④结点的度:结点所拥有的子树的个数树的度:树中各结点的最大值所以只有一个结点的二叉树度为0 二叉树可能为空树,也可能没有左子树或右子树,所以度不一原创 2022-11-04 09:18:41 · 527 阅读 · 0 评论 -
4-14 还原二叉树&&4-15 根据后序和中序遍历输出先序遍历
第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。输出为一个整数,即该二叉树的高度。原创 2022-11-03 11:13:43 · 580 阅读 · 0 评论 -
4-12 求二叉树高度
其中BinTree};要求函数返回给定二叉树BT的高度值。原创 2022-11-03 11:15:42 · 468 阅读 · 0 评论 -
2-9 彩虹瓶
彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地。如果搬来的这箱小球正好是可以装填的颜色,就直接拆箱装填;如果不是,就把箱子先码放在一个临时货架上,码放的方法就是一箱一箱堆上去。原创 2022-10-21 21:37:02 · 140 阅读 · 0 评论 -
3-3 另类循环队列
其中Queue/* 存储元素的数组 *//* 队列的头指针 */int Count;/* 队列中元素个数 *//* 队列最大容量 */};注意:如果队列已满,AddQ函数必须输出“Queue Full”并且返回false;如果队列是空的,则DeleteQ函数必须输出“Queue Empty”,并且返回ERROR。原创 2022-10-07 14:27:25 · 360 阅读 · 0 评论 -
3-1 Deque(附测试点)
deque”是一种由项目列表组成的数据结构,可以对其进行以下操作:推动(X,D):将项目X插入D板前端。弹出(D):从deque D中取出前面的项目并将其退回。注入(X,D):将项目X插入D的后端。弹出(D):将后面的项目从deque D中取出,并将其退回。编写例程以支持每次操作花费O(1)时间的deque。原创 2022-10-07 11:53:58 · 638 阅读 · 0 评论 -
下面是公式计算的代码,尝试在理解的前提下改造成中缀表达式转换后缀表达式的代码。
【代码】下面是公式计算的代码,尝试在理解的前提下改造成中缀表达式转换后缀表达式的代码。原创 2022-09-28 23:22:25 · 170 阅读 · 0 评论 -
数据结构与算法 实验题1 Josephus环问题
2)思路:创建一个含有n个结点的单循环链表,然后由第一个结点起从1开始计数(此时假设k-1),计到m时,对应结点从链表中删除,接下来从被删除结点的下一个结点重新开始从1开始计数,计到m时,从链表中删除对应结点,如此循环, 直至最后一个结点从链表中删除,算法结束。假设n个人每人持有一个密码(正整数),从编号为k的人开始从1开始顺序报数,报到m的人出列,此时将他的密码作为新的m值,从他顺时针方向上的下一个人开始重新从1报数,报到m的人出列,而后将他的密码作为新的值,如此循环 下去,直到所有人全部出列为止。原创 2022-09-27 20:45:28 · 944 阅读 · 0 评论 -
实验题目集 1-6 银行业务队列简单模拟(c/c++/python/附测试样例)
设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。原创 2022-09-25 20:39:30 · 587 阅读 · 0 评论 -
实验题目集1-4 列车厢调度
1 ====== 移动方向大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图,问题描述如下:有三条平行的列车轨道(1、2、3)以及1-3和2-3两段连接轨道。现有一列车厢停在1号轨道上,请利用两条连接轨道以及3号轨道,将车厢按照要求的顺序转移到2号轨道。原创 2022-09-25 19:32:31 · 149 阅读 · 0 评论 -
实验题目集1-1 一元多项式的乘法与加法运算(附测试样例)
设计函数分别求两个一元多项式的乘积与和。原创 2022-09-25 16:41:46 · 261 阅读 · 0 评论 -
2-5 Two Stacks In One Array(一个数组中的两个堆栈)
编写例程以仅使用一个数组实现两个堆栈。除非使用数组中的每个位置(也就是只有数组满的时候),否则堆栈不应声明溢出。原创 2022-09-18 09:17:15 · 727 阅读 · 0 评论 -
2-7 一元多项式求导
设计函数求一元多项式的导数。原创 2022-09-16 11:03:37 · 441 阅读 · 0 评论 -
2-6 两个有序序列的中位数
已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。原创 2022-09-15 23:14:20 · 290 阅读 · 0 评论 -
2-3 链表拼接
其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接的链表,并返回结果链表的头指针。原创 2022-09-15 18:09:37 · 378 阅读 · 0 评论 -
2-1 Add Two Polynomials(多项式相加)(附测试样例)
编写一个函数来实现两个多项式相加。不要破坏输入。使用带有头节点的链表实现。注:零多项式由一个空列表表示,其中只有头节点。原创 2022-09-15 17:32:27 · 1751 阅读 · 1 评论 -
2-2 学生成绩链表处理
函数createlist利用scanf从输入中获取学生的信息,将其组织成单向链表,并返回链表头指针。int num;/*学号*//*姓名*/int score;/*成绩*//*指向下个结点的指针*/};输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。函数deletelist从以head为头指针的链表中删除成绩低于min_score的学生,并返回结果链表的头指针。原创 2022-09-15 09:01:22 · 437 阅读 · 0 评论 -
1-10 链表去重
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。原创 2022-09-14 21:37:12 · 494 阅读 · 0 评论 -
P1003 [NOIP2011 提高组] 铺地毯
P1003 [NOIP2011 提高组] 铺地毯原创 2022-07-17 10:15:30 · 591 阅读 · 0 评论 -
归并排序!!!
归并原创 2022-07-18 16:58:18 · 107 阅读 · 0 评论 -
插入排序!!!
实际上while循环操作就是移动数组元素,给我们新插入的数留出一个合适的位置。最后是a[j + 1] = key;退出循环时, j = -1;也就是 a [0]= 26;原创 2022-07-17 16:36:06 · 141 阅读 · 0 评论 -
1-9 最长连续递增子序列
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。原创 2022-09-14 19:29:18 · 428 阅读 · 0 评论 -
1-8 数组循环左移
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−1)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?原创 2022-09-13 22:39:04 · 181 阅读 · 0 评论 -
1-7 两个有序链表序列的交集
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。原创 2022-09-13 22:19:51 · 433 阅读 · 0 评论 -
1-6 求链式线性表的倒数第K项
给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。原创 2022-09-13 21:34:56 · 166 阅读 · 0 评论