数据结构
文章平均质量分 60
一些数据结构的题目
韶瑜不会写代码
依托答辩
展开
-
问题 J: 数据结构基础33-查找二叉树
第一行n为二叉树的结点个树,n<=100;第二行x表示要查找的结点的值;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。例:如图二叉树的数据文件的数据格式如下。感觉二叉树的题目是真的不好做啊,自己还是太菜了。输出一个数即查找的结点编号。原创 2024-09-06 17:03:31 · 232 阅读 · 0 评论 -
问题 A: 数据结构基础24-找树根和孩子
每行两个结点x和y,表示y是x的孩子(x,y<=1000)。给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子。第一行:n(结点数<=100),m(边数<=200)。第二行:孩子最多的结点max。第一行:树根:root。第三行:max的孩子。原创 2024-08-21 16:46:44 · 148 阅读 · 0 评论 -
问题 K: 数据结构基础22-Blash数集
输入包括两个数字,集合的基a(1<=a<=50))以及所求元素序号n(1<=n<=1000000)(2)如果x在集合Blash中,则2x+1和3x+1也都在集合Blash中;现在小高斯想知道如果将集合Blash中元素按照升序排列,第N个元素会是多少?(1) a是集合Blash的基,且a是Blash的第一个元素;(3)没有其他元素在集合Blash中了。对于每个输入,输出集合Ba的第n个元素值。注意:集合中没有重复的元素。原创 2024-08-21 09:53:25 · 222 阅读 · 0 评论 -
问题 G: 数据结构基础18-产生数
写了一个循环队列吧算是,这个题目说实话我觉得不简单,特别是你要考虑要变化那个位数的时候还是需要思考很多东西的,但是我在想如果这个题用字符串来输入不知道是不是会更好,这样在变化位数的时候是不是代码可以不用那么繁琐,当然我也只是一个想法,是一道循环队列的好题目,记得要判断队列满的这种情况吧。上面的整数234经过变换后可能产生出的整数为(包括原数)234,534,264,564共4种不同的产生数。求经过任意次的变换(0次或多次),能产生出多少个不同的整数。格式为一个整数(满足条件的整数个数)。原创 2024-08-15 11:29:16 · 330 阅读 · 0 评论 -
问题 F: 数据结构基础17-奇怪的电梯
电梯只有四个按钮:开,关,上,下。这个题目总体来说还是一道十分典型的队列题目,我用了广度优先搜索的方式去做这道题,因为我发现首先楼层的数量不是很多,而且每次只需要考虑两种情况就可以了,因此我认为广度优先搜索是一个不错的选择,然后的话就是记得要检查这个楼层是否已经检查过这种基本的问题 ,第一次编写的时候忘记检查了,导致出了一点点小问题,后面发现之后就没有报错了。输入文件共有二行,第一行为三个用空格隔开的正整数,表示N,A,B(1≤N≤200, 1≤A,B≤N),第二行为N个用空格隔开的正整数,表示Ki。原创 2024-08-14 10:20:56 · 261 阅读 · 0 评论 -
问题 E: 数据结构基础16-最少步数
现在他请你帮忙,给你A、B两点的坐标,想知道两个位置到(1,1)点可能的最少步数。这个题讲真的自己没做出来,看了一下csdn上有人写过这道题,学了一下它的代码,我没想到这种广度搜索的方式居然不会超时,我感觉这样的操作其实是有点慢的,多了很多不必要的 ,能进行很多优化我感觉,比如有些离原点越来越远的那些是不是根本就不用进入循环,毕竟每次有一个进入循环就得循环12次,一开始我也没想到居然是这种最老套的方法是最实用的,大家自己看看吧,有更好的优化算法欢迎指正和批评。所有坐标值不超过100。原创 2024-08-13 15:34:25 · 487 阅读 · 0 评论 -
问题 D: 数据结构基础15-魔法师和扑克游戏
我稍微给大家来点注释吧,这样的写法确实能比你单独的用链表啥的 做代码复杂度降低了很多的,主要是for循环那块,这样写主要出发点就是从末尾元素开始,假设你的所有元素已经出队完成,从最后一个出队的元素开始,在慢慢的向前推进,q.size()是指你在出这个元素之前的队里有多少元素,那么你就需要移动队里的元素多少次,因为你移动的次数由当前数的大小来决定,那么当x循环到1的时候你是不需要在循环一次,所以前面加了代码当x=1时直接跳出循环,由于他是逆序进入的,所以最后输出的时候也应该逆序输出。原创 2024-08-13 10:04:21 · 454 阅读 · 0 评论 -
问题 C: 数据结构基础14-关系网络
把 x 加入队列并设置为队头元素,设 q[x][1]=0,从队头开始进行宽搜,穷举邻接矩阵的第 x 行,看 x 认识谁(判断 a[x][j]=1),认识的人(j)全部依次入队,并且 q[j][1]++。有 n 个人,他们的编号为 1~n,其中有一些人相互认识,现在 x 想要认识 y,可以通过他所认识的人来认识更多的人(如果 a 认识 b,b 认识 c,那么 a 可以通过 b 来认识 c),求出 x 最少需要通过多少人才能认识 y。保证 i=j 时,a[i][j]=0,并且 a[i][j]=a[j][i]。原创 2024-08-12 14:48:49 · 484 阅读 · 0 评论 -
问题 B: 数据结构基础13-最大黑区域
这个题目,我觉得最关键的是你不用去考虑,当你把已经用掉过的1变成0时会不会导致最后的结果改变,实际上是不会的,因为你每一个最大的黑区域都是包含了这一片的1,也就是说你不管从哪个1 开始,其实都不会改变这一片黑区域的最大值,因此来说这个跟队列里的a题是有类似之处的,或者说两道题目很像,只是这道题目花的时间和空间复杂度可能会多一点。请设计一个程序完成二值图像的这个操作,黑区域由黑像素组成,一个黑区域中的每像素至少与该区域中的另一个像素相邻,规定一个像素仅与其上下左右的像素相邻。原创 2024-08-12 10:49:50 · 1086 阅读 · 0 评论 -
问题 A: 数据结构基础12-瓷砖
这个题目看着是一个队列题目,但是做起来的时候我用的确是递归的思想,奇了怪了,也不知道为什么要把这个题目放在队列的里面,难道是单纯用了数组的思想吗,我也不是很清楚,定义数组a和b的时候一定要看清是定义的是字符型数组还是数值数组。小谢同学站在某一块黑色的瓷砖上,他可以从此处出发,移动到上,下,左,右四个相邻的且是黑色的瓷砖上。现在他想知道,通过重复上述移动所能经过的黑色瓷砖数。以下为一个w行h列的二维字符矩阵,每个字符为“.”"#","@",分别表示该位置为黑色的瓷砖,红色的瓷砖,以及小谢的初始位置。原创 2024-08-12 10:23:59 · 635 阅读 · 0 评论 -
问题 K: 数据结构基础11-图的深度优先遍历
图的深度优先遍历指,先任意找一个顶点入栈,即为栈顶元素,然后找到跟栈顶元素相连的一个顶点入栈,接着继续把跟栈顶元素相连的一个顶点入栈,若栈顶元素没有相连的顶点或者相连的顶点都已经入过栈,那么栈顶元素就出栈,循环直到栈为空。那么元素的入栈顺序就是图的深度优先遍历。接下来的n行是一个n*n的邻接矩阵,a[i][j]=1表示顶点i和顶点j之间有直接边相连,a[i][j]=0表示没有直接边相连,保证i=k时a[i][j]=0,且a[i,j]=a[j,i].读入一个邻接矩阵存储的无向图,输出它的深度优先遍历序列。原创 2024-08-09 13:57:19 · 905 阅读 · 0 评论 -
问题 J: 数据结构基础10-洗盘子
开始时,所有盘子按顺序排列在栈中,1号盘子在顶端,N号盘子在底端。然后,小苏擦干小明已经洗好的部分或全部的盘子,放在擦干的盘子栈里。然后,小明再洗一些盘子,小苏再擦干一些她已经洗好的盘子,直到所有盘子洗完擦干。比如,有1,2,3,4,5号盘子,先洗3个,然后擦2个,再洗2个,再擦3个。哎,一开始我觉得这个题目很简单,但是运行的时候发现他不输出,后来仔细看了一下才看到我第二个循环里面没有给出条件,而且这个题目有一个难点,就是需要你自己跳出while循环,没有给特定条件,总的来说是一道比较简单的练习题。原创 2024-08-09 09:39:31 · 422 阅读 · 0 评论 -
问题 G: 数据结构基础7-程序员输入问题
输入一个中缀表达式(由0-9组成的运算数、加+减-乘*除/四种运算符、左右小括号组成。注意“-”也可作为负数的标志,表达式以“@”作为结束符),判断表达式是否合法,如果不合法,请输出“NO”;否则请把表达式转换成后缀形式,再求出后缀表达式的值并输出。注意:必须用栈操作,不能直接输出表达式的值。如果再考虑是实数运算呢?这个题目总的来说没什么难度,基本写一遍就能ac,所以就这样吧。如果表达式不合法,请输出“NO”,要求大写。输入文件的第一行为一个以@结束的字符串。如果表达式合法,请输出计算结果。原创 2024-08-08 11:22:55 · 464 阅读 · 0 评论 -
问题 B: 数据结构基础2-括弧匹配检验
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?匹配就输出 “OK” ,不匹配就输出“Wrong”。这个题目好像就比上面一个题目多了一个括号的处理,hh。输入一个字符串:[([][])],输出:OK。原创 2024-08-07 14:33:39 · 417 阅读 · 0 评论 -
问题 A: 数据结构基础1-表达式括号匹配
假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;表达式长度小于255,左圆括号少于20个。这道题目其实也没有太大的难度,所以大家就当乐子看看吧,但是我还是为了做出这道题寻求了一下gpt的帮助,中间有个问题我觉得没问题,但是结果。表达式长度小于255,左圆括号少于20个。一行:“YES” 或“NO”原创 2024-08-07 13:53:41 · 392 阅读 · 0 评论 -
问题 E: 数据结构基础5-车厢调度
但是一旦进入车站C,它就不能再回到A方向的铁轨上了,并且一旦当它进入B方向的铁轨,它就不能再回到车站C。这个题目也略微的比较简单,是判断这个栈能否实现的一种题目,也算是一种基础题目,对于新手来说这样的题目非常的合适,不过我第一次做这个题目也是困住了for和while中两个循环的使用选择,后来再斟酌后觉得while更加合适一些。,an的顺序从B方向驶出,请来判断能否得到指定的车厢顺序。输入文件的第一行为一个整数n,其中n<=1000,表示有n节车厢,第二行为n个数字,表示指定的车厢顺序。原创 2024-08-07 09:38:55 · 503 阅读 · 0 评论 -
问题 I: 数据结构基础9-火车编组
如果一列火车有4节车厢,经过编组后,车厢的编组顺序为3,2,4,1;小明到编组站参观后发现编组站的铁路有很多岔道,火车在岔道上来来回回地开动,最后列车编组就完成了。小明想到学习过的栈操作,发现火车编组的过程就是由若干进栈,出栈操作构成的。中间有一行代码trains.empty()前往不能忘记,不能只看他有没有达到出栈的要求,还有一种需要考虑到的情况就是目前栈中的元素已经出完了为空,因此就需要判断这个栈是不是空的。第2行n个小于或等于n的正整数,表示有n节车厢,编号为1,2,3,……原创 2024-08-06 15:49:57 · 361 阅读 · 0 评论 -
问题 D: 数据结构基础4-计算
小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*”,“/”,“^”求出的值就是密码。小明数学学得不好,还需你帮他的忙。(“/”用整数除法)100%的数据满足:算式长度<=30 其中所有数据在231-1的范围内。输入文件calc.in共1行,为一个算式。输出文件calc.out共1行,就是密码。原创 2024-08-06 14:24:05 · 474 阅读 · 0 评论 -
问题 H: 登记成绩
题目描述叶老师想要用链表登记成绩。对于每张试卷有两个信息:学号和成绩。对于登记成绩,要求学号小的成绩登记在学号大的成绩之前。叶老师有两种操作:1 a b:向链表中加入学号为a成绩为b的同学的成绩,题目保证不同的卷子不会有相同的学号。2 k : 查询当前链表中第k个同学的成绩是多少,题目保证k小于等于当前链表的长度。请用链表做这道题!输入第一行输入一个整数Q,表示操作的个数。接下来输入Q行,每一行是(1 a b)或者(2 k)格式,分别表示第一种和第二种操作。输出。原创 2024-08-05 14:29:42 · 863 阅读 · 0 评论 -
问题 F: 学生信息库的建立(用链表完成)
ac代码如下,由于我用的是vs编译器,那么我建议在调试的时候把strcpy函数改成strcpy_s函数,不然应该是会报错的,下面自定义函数的else里面的代码也可以不用末尾插入的方式,可以自己定义一个新的节点,遍历到后面一个为空时再选择插入。输入一些学生的信息,每个学生信息一行,分别为学号、姓名和成绩,中间用空格隔开,其中学号和成绩均为整数,姓名为不超过15个仅包含大小写字母的字符。按照输入的顺序建立链表,并输出所有高于平均分同学的学号和分数,每行2个整数,中间用空格隔开。完成函数内链表的创建工作。原创 2024-08-02 09:39:59 · 902 阅读 · 0 评论