![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 95
数据结构的博客
余羡
一名学习的程序猿
展开
-
栈和队列讲解
队尾入元素需要判断一下队列是否为空,如果为空就直接复制,不为空的话 ,直接尾插,这里我们直接让rear去移动,队头不变,这样的话从队头出也方便了。栈可不能跟数组一样直接就用了,我们需要判断栈是否为空,如果不是空我们打印栈顶元素,同时把栈顶元素出栈继续访问下一个元素,直到栈为空为止。由于这里我们的top指向的是元素的下一个位置,所以我们只需要返回top–指向的元素就可了,但是我们也得保证此时top是。这里的Queue我们有两个成员,一个指向头,一个指向尾,同时每一个成员都是一个节点的指针。原创 2024-05-12 17:46:57 · 751 阅读 · 0 评论 -
环形队列(图解)
如果此时rear == 0,rear-1就为-1,这样就会导致数组越界,所以我们取(rear-1+SIZE+1)%(SIZE+1)位置的元素,此时即便rear = 0,那我们取得也是最后一个元素,同时rear > 0的时候也是满足条件的。(由于我们多开了一个空间,所以我们此时的长度为原数组长度+1),那我们就可以放心的直接。队尾入也是一样的,只需要当rear等于数组+1的时候要对数组加一取模。",同时环形队列的大小是固定的,它可以重复利用某一位置。,环形队列也不例外,只不过这里的。取队头元素简单,直接取。原创 2024-05-16 13:47:05 · 1069 阅读 · 0 评论 -
排序讲解(图解)
不过这里我们除了记录key值以外,还要记录此时的keyi(key值下标),然后end往前遍历找小,start往后遍历找大,只有都找到了,才能交换,当start >= end的时候,还有与keyi交换,因为我们是以key作为分界点的。以上只是第一趟的结果,我们还需要不断的调整,[left,keyi-1][keyi+1,right]的区间的顺序,最终才能有序,就是我提到的。希尔排序可以看做是插入排序的优化版,插入排序如果排的是有序数组,那将非常快,我们这次先对原数组进行预排序,先让数组部分有序,怎么做呢?原创 2024-05-17 21:05:04 · 1026 阅读 · 0 评论 -
双向带头循环链表(图解)
单链表地址在单链表中我们只有一个指针指向下一个节点,而双向链表则需要两个指针,一个指向前一个节点,一个指向后一个节点,由于我们需要循环起来,所以最后一个节点我们要指向头节点(这里是指第一个节点) 为了避免搞混我下文把第一个节点称为头节点,哨兵节点就为哨兵节点哨兵节点如下:注意这里我们是要创建一个哨兵节点,所以我们需要返回一个节点,而我们接下来的操作都是在哨兵节点的基础上进行的,所以每一次进行基本增删操作的时候可以传一级指针,因为我们接受的哨兵节点肯定是一个指针类型的。结构定义如下:代码实现:头插首原创 2024-05-11 16:54:35 · 1029 阅读 · 1 评论 -
C语言链表讲解
然后把他的next与newhead。原创 2024-04-18 22:00:08 · 1017 阅读 · 0 评论