数据结构与算法
文章平均质量分 77
数据结构与算法
FLUENTYAN
这个作者很懒,什么都没留下…
展开
-
C++实现双端队列(数组模拟)【每一步详细深入讲解,代码清晰、简单、易懂】
如左图,左指针已经到了左边界,但队列还没满按理说应该可以左入队,再次入队之后左指针应该到达最右边,这样才能实现继续入队,现在只要实现左指针到达左边界时再入队,指针移动到最右边的操作。经过思考,发现一个小于B的数A模B依然等于A,而如果A等于B,那A模B就等于0,-1+B模B等于B-1,而A加上任意个B 再模B依然等于A。但是,这样怎么看怎么别扭,左边和右边都执行了入队,但左指针位置无元素,右指针位置却有,而且左右入队操作不同,不太符合通用原则。发现,左边入队是正常,但,右边入队时入队的值覆盖了之前的值!原创 2023-01-10 20:49:23 · 3598 阅读 · 1 评论 -
C++实现栈(链表模拟)【每一步详细深入讲解,代码清晰、简单、易懂】
链表则不同,每次入栈相当于在后面多链上一个节点,而出栈则是把最后一个节点设为。由于栈是一种较为简单的数据结构,用链表实现栈,逻辑上和数组差不多。数组实现栈时,每次入栈就相当于将数组中下一个位置填值。由于我们是用链表模拟栈,因此不会有栈满的情况。根据上面的分析,可以得出,我们需要一下数据。内置的在尾部插入函数,并递增栈顶迭代器。先判断时候为空,再执行操作。原创 2022-12-17 19:30:27 · 1398 阅读 · 0 评论 -
C++实现循环队列(数组模拟)【保姆级讲解】
看起来还不错,但仔细观察出队到队空时,队列里面没有数了,也就是队空了,可以继续加数据,但是,表示队列头尾的变量已经到了数组的最右边的下一个索引,已经没办法再往右了,同时数组还是空的。这里可以将数组的一个格子空出来,当数组还有一个格子的时候,就当作队列已经满了。出队的话,可以利用和入队类似的办法,但数组无法删除元素,但我们可以用一个数组索引的变量表示队头的位置,每次出队只需把这个索引向递增即可。这样看起来可以,但是有一个问题,我们需要时刻记得我们入队了几次,否则就无法根据索引入队了。没有到达数组末尾的时候,原创 2022-12-10 10:32:31 · 3341 阅读 · 2 评论 -
C++实现栈(数组模拟)【每一步详细深入讲解,代码清晰、简单、易懂】
栈就像一个子弹匣,第一粒按进去的子弹最后一个被击发,而最后一个子弹第一个被击发。这就是栈的特点:先进后出,后进先出。入栈与出栈过程:栈需要入栈以及出栈操作;3、入栈操作利用数组模拟栈,每次入栈从数组后面追加,数组开头是栈底,数组末尾为栈顶。代码逻辑:4、出栈操作代码逻辑:判断栈是否为空不空:空:原创 2022-12-05 20:41:57 · 3062 阅读 · 0 评论 -
C++实现双链表【每一步详细深入讲解,代码清晰、简单、易懂】
双链表节点由存储的数据、指向前一个元素的指针和指向后一个元素的指针构成,因此双联表节点的代码也很容易得到,如下:双链表和单链表类似,也需要添加、删除和查找。1、插入操作插入的情况说明:插入每次都在第一个位置插入,也就是在伪头节点(不含元素)后插入。插入节点的过程:插入的代码逻辑:2、删除操作将目标节点的下一个节点的指针指向目标节点的前一个节点(目标节点下一个节点不存在则省略)将目标节点的前一个节点的指针指向目标节点的下一个节点代码逻辑:3、查找操作不同于单链表,双链表查找直接返回目原创 2022-12-04 22:44:25 · 2445 阅读 · 0 评论 -
C++实现单链表【每一步详细深入讲解,代码清晰、简单、易懂】
例如:我们需要在伪头节点(不包含数据)和含有1的节点之间插入一个节点,发现,只需要改变dummy的指针和需要插入的指针即可。通过对插入和删除的讨论,我们了解到,插入调用find函数时,并不需要操作其返回值,所以,返回值具体是该元素的节点还是其前面的节点并没有影响;,而第一个节点的前一个节点是dummy,这也是为什么我们需要dummy这个伪头节点。,因此,删除操作时我们必须得到需要删除节点的前一个节点,因此。先将要添加的元素的指针指向dummy节点的后一个节点。将要添加节点的指针指向之前的下一个节点。原创 2022-12-03 00:22:06 · 4397 阅读 · 0 评论 -
Algorithms Lecture 1 -- Introduction to asymptotic notations【渐进表示法】
油管Uncode印度小哥数据结构算法讲座原创 2022-03-29 14:17:54 · 153 阅读 · 0 评论 -
Algorithms lecture 2 -- Time complexity Analysis of iterative programs【迭代算法的时间复杂度计算】
具体代码示范时间复杂度计算原创 2022-03-29 20:53:55 · 1086 阅读 · 1 评论 -
Algorithms | L - 3 | Time Analysis of Recursive Program【递归算法时间复杂度计算】
多种方法实现递归算法时间复杂度计算原创 2022-03-31 13:59:02 · 225 阅读 · 0 评论