
Data-Structure
XD谭柘
名非天造,必从其实
展开
-
XDOJ-360 结点在二叉排序树的位置
此题确实有一定难度,需要对二叉树、遍历算法、指针的相关知识十分熟练才能作对此题,我已将里面我踩过的坑一一注释,希望能对后来的同学有所帮助,恕我愚钝,实在是找不到其他较好的算法了,也希望有其他好方法的朋友可以不吝赐教。然后再给出给定的M个数据分别在树中的位置信息,这个位置信息是一个五元组(双亲、左孩子、右孩子、中序深度优先遍历的直接前驱、直接后继)。输出中应该包含M行,每行有五个数据:给定数据在树中的双亲、左孩子、右孩子、中序深度优先遍历的直接前驱、直接后继。第一组为一个数据,说明序列中元素的个数N;原创 2022-12-01 15:43:48 · 810 阅读 · 1 评论 -
XDOJ-274 中序遍历二叉排序树
本题应该是数这节上机题中最简单的一道,只要掌握中序遍历思想就可解决。输入第一行为整数的个数n,第二行是具体的n个整数。输入一整数序列,建立二叉排序树,然后中序遍历。建立二叉排序树,然后输出中序遍历的结果。1.中序遍历左子树。3.中序遍历右子树。原创 2022-12-01 15:37:00 · 952 阅读 · 0 评论 -
XDOJ-270 统计二叉树中的叶子结点数
按照完全二叉树的形式输入二叉树的各结点数据(字符),其中虚结点用'@'表示。第一行为为叶子结点的数据值,各数据用空格分隔,第二行为叶子结点的个数。一棵树的叶子数目等于它的左子树叶子数加上右子树叶子数的总和。由于二又树的遍历算法是许多二叉树运算的算法设计的基础,因此遍历算法的应用很广泛。下面将以遍历算法求二叉树的叶子数为例,来加深对二叉树遍历算法的理解。因为叶子结点是二叉树中那些左孩子和右孩子均不存在的结点,所以可在二叉树的遍历过程中,对这种特殊结点进行计数,来完成叶子结点数的统计。原创 2022-12-01 15:30:07 · 1503 阅读 · 0 评论 -
XDOJ-275 哈弗曼树
哈夫曼树又称最优二叉树,是一类带权路径长度最短的树。当计算构造哈夫曼树的带权路径长度时我们可以使用常规方法进行计算,这里就不展开介绍了,我们在这里给大家介绍一种简便方法,请看下图:原创 2022-12-01 15:19:24 · 930 阅读 · 0 评论 -
XDOJ-267 判断栈输出顺序正确与否
本题算是比较难的,如果要遍历每一个输出进行比较的话将会十分困难,但是通过逆向,我们将可以化难为易。基本思路是:将输入的出栈序列按照顺序进行弹出,如果能够弹出就证明输出正确,否则就输出错误。如按照此顺序弹出:3 2 1 7 5 6 4,那么就是先入栈123,之后进行比较将3出栈,再比较,将2、1分别出栈,再入栈4 5 6 7,再进行比较,出栈7,最后发现无法在不出栈6的情况下出栈5,则证明此顺序错误。但是,在这之中亦需要考虑栈是否已满,能否入栈等问题,因为此问题中栈的容量也是不确定的因素。原创 2022-11-02 19:45:57 · 1303 阅读 · 5 评论 -
XDOJ-268 括号配对问题
括号匹配问题思路如下:当输入的括号为左括号时,就压入栈;有元素就弹出栈一个元素,和输入的进行匹配,此处无法匹配成功的情况只有两种,分别是"[)"、"(]"(这是只有小括号和中括号的情况,三个情况的大同小异)。原创 2022-11-02 19:37:06 · 1178 阅读 · 2 评论 -
XDOJ-265 队列中的元素排序
因为队列的特点是先进先出,我们只需拿出一个元素和其他元素进行比较,将比较后最小的拿出来放入另一个队列中,比它大的都入队,经过一定循环之后,新队列里面的都是以从小到大排序的元素了。原创 2022-11-02 19:28:24 · 385 阅读 · 0 评论 -
XDOJ-269 判断字符串是否为回文
在设计算法时可以通过循环将数组元素的一半压入栈(奇数的话中心数不压入栈),之后将压入栈的依次出栈和字符串剩下的进行比较就可以轻松解决。但是要注意在调试完的时候一定要将调试代码段注释掉,不然会导致结果出错。原创 2022-10-31 13:51:52 · 646 阅读 · 0 评论 -
XDOJ-265 队列中的元素排序
本题是一道基础题,主要让大家熟悉下队列的一些基本操作,上手的话没有什么太大的难度,思路也很多,这里仅提供一个常规思路。给定一个队列,请用一系列合法的队列操作函数,比如判断队列是否为空,入队操作,出队操作,将队列中的元素从小到大排序。可以使用一个辅助的队列,采用循环筛选法(即第一轮将最小的选出来,第二轮将次小的选出来,以此类推)输入首先给出1个正整数N(N原创 2022-10-17 17:29:20 · 382 阅读 · 0 评论 -
XDOJ-276 多项式加减法
本题作为第一次上机的题目,确实有一定的难度,针对后面不同的情况需要分情况进行设计算法。并且要读懂题目的要求,不然肯定是做不对的(我就是没读懂题目,嘎嘎写完发现超时报错)。本代码应该是优快云中唯一一个可以运行并且满分的代码,也是我根据其他代码进行参考学习后才写出来的(读书人的的事嘛,dddd),在此对提供思路和代码的大佬表示感谢。也欢迎各位和我进行深入交流。原创 2022-10-05 09:34:20 · 986 阅读 · 0 评论 -
XDOJ-264 反转链表
本题最主要的问题就是设计反转的算法,我为大家提供两种可行思路的代码,大家可以选择最适合自己的算法进行程序设计。从第二行开始每行表示一个链表,其中第一个数据表示链表中数据个数,其余数据表示要测试的链表中的数据,均为整数。输入第一行为整数n(n>=1),代表测试链表数。输入一个链表,反转链表后,输出链表的所有元素。每一行对应一个链表反转后的元素。原创 2022-10-05 09:27:10 · 922 阅读 · 0 评论 -
XDOJ-263 递增链表的插入
本题是较为容易的一题,只需要将前后两个链表元素的数据大小和要插入的数据进行比较就可得出结论,分为三种情况。情况一:如果小于前面的并且大于等于后面的,即为满足条件,只需要将插入元素的next指向后面的,将前面的next指向要插入元素,就可将元素插入其中;情况二:待插入的数据最小,那么就需要将其插入到头指针后,它的next指向第一个存放数据的元素;情况三:待插入的数据最大,那么就需要将其插入到最后,链表中最后一个元素指向它,它的next置空即可。原创 2022-10-05 09:21:48 · 612 阅读 · 0 评论 -
XDOJ-262 学生信息管理
本题为XD数据结构上机链表单元第一道练习,主要是让大家熟悉下链表和如何用链表来存储相应数据,并使用指针进行查找链表中的相应数据,进行删除运算等。由于在进行链表的空间分配时没考虑全面,导致会出现越界等现象,已经在代码中易错部分添加注释,如有其他建议,欢迎和我进一步探讨。每行一个学生信息,包括:姓名(不超过20个字符的字符串)、学号(整形)、性别(字符),以空格分隔。学生数据以#结束,并在下一行输入退学学生的学号。现要求根据退学学生的学号,将其信息从链表中删除。若链表中有退学学生,输出删除该学生后的学生数据;原创 2022-10-05 09:12:47 · 773 阅读 · 0 评论 -
数据结构与算法分析1
大家好,新学期开始了,本学期我会在这个专栏进行数据结构与算法分析的学习经验分享和作业答案共享,本专栏是基于我在上课和课下所学的知识进行整理得出的。课本用的是西电出版社的数据结构,文章中的例子会用到青岛大学王卓老师b站视频中的相关例子和XDU党岚君老师课件中的相关例子,仅供学习参考,如有任何问题请联系我进行修改。原创 2022-09-09 20:14:38 · 354 阅读 · 0 评论