![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
cian23
这个作者很懒,什么都没留下…
展开
-
4.1 二叉树的构建以及遍历
当我们需要创造一个有意义的节点时(即其中有元素),将这个节点的地址存入队列中,当需要向下衍生更多的子树的时候,我们就将队列此时的首个地址弹出,这个节点的左右此时是没有子树的地址的,实际操作如下。这样一层一层地将有意义的元素压入队列中,同时呢,因为队列先进后出的特点,我们本来就是一层一层地从左到右压入,在循环的过程中,作为父节点的元素就会弹出并输出。就是这么巧妙的原理。但本质上,它们并无差异,遍历元素的顺序都是一样的,只是打印的时机不同。我们先将整个树的根入队列,然后将子树的有意义的元素进队列。原创 2023-05-04 00:22:58 · 70 阅读 · 1 评论 -
3.3 链式队列
队列同样是操作受限的线性表,这种结构从规定上来说,只允许尾部进,头部出,如果使用数组来实现这个队列,因齐固定的分配空间,非常容易造成溢出,所以这里要使用链式的结构,这样的话,有了动态的空间,就不会发生溢出了。因为队列的出队需要从头部开始,所以需要头指针,同时又要从尾部进行插入,需要尾指针。同时,这个队列需要两个指针移动来进行实现。2.初始化及入队出队等多项操作。1.节点及队列的定义。原创 2023-04-24 21:48:53 · 59 阅读 · 0 评论 -
3.2 括号匹配
我们要对括号进行匹配,就需要先读入这串括号,我们首先考虑用数组的形式,发现读入是简单了,但要怎么匹配呢,特别是当括号有嵌套的情况,链表就更不可靠了,访问其中的数,还需要遍历,于是,栈这种受限的顺序表就出现了。当读入括号的时候,我们就要将还未成功匹配的括号压入栈中,如果有更加急迫的括号,就将这个更急迫的括号压入,直到有与之匹配的括号读入,此时再将该括号弹出。在此之前,我们要先建立一个栈,以及其中的入栈和出栈等流程。0代表匹配不合法,1代表匹配合法。以( { } [ ] 为例。原创 2023-04-24 20:17:06 · 74 阅读 · 0 评论 -
3.1 汉诺塔问题
在刚才的函数中我你能够看出在paraN=2时候的函数在工作还未进行完成时,这时又进行了paraN=1 的函数,根据函数的工作原理,在进行paraN=2 的时候,计算机已经给这个函数分配了一片的地址了,在进行到paraN的时候,我们又要分配一片空间去给paraN=1 这个函数去进行使用,在完成后,释放这片空间,进行移动操作,然后再次执行paraN=1,这时又使用了刚才的空间,这是因为递归的工作是以栈的形式完成的。然后是最后一行地址打印,这时的paraN为1,而在此时的参数占用地址跟上一句时一样的,为何?原创 2023-04-24 14:05:28 · 90 阅读 · 0 评论 -
线性表的总结
这个概念可以线性表的前提,告诉我们为啥要提出线性表这种结构,因为我们要合理地组织数据在内存的储存方式,从而提高数据在内存中的处理和组织方式,所以我们提出线性表这个简单的概念,用 于简单的数据结构学习,对于其他的语言,貌似是有其他的特有的数据结构的,而线性表的实现大概有两个。这段时间学习闵帆老师的代码,我获得了良好的编写习惯,以前的我都是用眼睛去纠正代码,因为自己的代码难以调试,标准化,格式化的代码,虽然在写的时候有更高的要求,但是在调试的时候却能节省很多时间。2.用一个强化类型的数组去实现线性结构。原创 2023-04-19 23:25:50 · 90 阅读 · 0 评论 -
2.5 多项式的加法
我们的目标是将两个多项式进行合并,所以先要使用两个单链表对这两个多项式进行输入和储存,再依次对每个节点进行“比大小”的操作,按某种顺序对每个节点的次数进行判断,这里我们将结果储存在第一个链表中,当然你也可以在创建一个单链表用于储存新的结果。我觉得编写这段代码很好地训练了我的抽象思维能力,在大脑里模仿计算机的思维方式可以说是比较困难,我在纸上画了图才了解add函数是如何运作的,想要将计算方法转化成简洁的程序设计语言确实需要一定动手能力。而创建单链表和添加元素的操作与2.2单链表中的操作无异。原创 2023-04-11 13:25:52 · 67 阅读 · 0 评论 -
2.2单链表的实现及收获
1.在闵老师的地址打印测试程序中,我发现链表节点的指针(ListNode)和 data域的指针(LinkList->data)的地址是相同的,而指针域的地址(LinkList->next)相差了8个byte。2.对链表的学习,让我更加意识到组织数据储存方式的重要性,不同的储存方式,不仅在计算机的内存中有区别,同时也有对应的实际意义,比如链表不易造成数据泄露,从本质上认识数据的储存方式,能增长有用的逻辑思维。2.2.1.6 单链表的查找操作(此处返回的是查找节点的地址)2.2.1 单链表的代码及具体操作。原创 2023-03-29 23:43:02 · 141 阅读 · 0 评论 -
2.4 静态链表
我们前面学习了单链表的实现及操作,但这是我们使用动态的空间所实现的链表,我们需要链接某个数据的时候我们就申请一片空间,但这种链表如果要访问最后一个元素时,需要遍历整个链表,那如果我们想做一个快速访问的链表,就可以融合顺序表的优点。那么我们现在要用静态的空间去实现一个链表,该如何操作呢?通过学习静态链表,我了解了如何在自己创造的空间实现一个链表,模仿计算机在系统中的操作,同时明了链表的逻辑结构,对链表这种数据结构的理解更加地深入。接下来就是实现链表中的各项操作(通过指针移动或者叫做浮标)原创 2023-04-10 20:36:27 · 72 阅读 · 0 评论 -
2.1顺序表的实现
自己写的GetElement函数及测试调试了很久才成功运行,但老师代码部分誊抄错误的。3.收获:老师写注释的方式非常值得我们学习,我抄完代码后发现编译有很多错误,我。地方能够快速地纠正,我发现多得益于测试代码的存在。对函数的执行进行分步,虽然。1.我仿照闵帆老师的写法,编写了GetElement函数及其测试函数。2.对比老师的代码,发现有很难像老师一样写出简洁而且模块化的代码。在编写花费了更多的时间,却增强代码的可调试性。e.g:代码里面好像有四处单词拼写错误。原创 2023-03-28 10:26:49 · 65 阅读 · 0 评论 -
记第一堂数据结构的收获 (swpu)(闵帆)
对闵帆老师的第一堂课的感悟和收获原创 2023-03-22 11:01:22 · 58 阅读 · 0 评论