数据结构
文章平均质量分 94
学习数据结构详解(C语言版本)
Ragef
认真生活
展开
-
时间复杂度和空间复杂度
我们每个人都有每个人自己的思想,写出来的代码自然就各有不同但是代码也是分好坏的,每做一道题,使用到的算法也是有好坏的,那么我们如何来衡量这个好坏呢?下面将从时间和空间两个角度分析。原创 2024-04-30 15:45:19 · 311 阅读 · 0 评论 -
C数据结构:单链表
每一个车厢可以看作是一个个的数据,中间把它们链接起来的东西就是我们的指针,指针存储着下一个“车厢”的地址,只有到达了这个车厢获取到了我们的指针才能获取到下一节车厢的钥匙。所以我们定义了一个cur负责走到pos的前一个节点,然后将cur的next指针指向我们新创建的节点连接起来,然后让新节点的next指向我们的pos指向的节点即可。= NULL 的条件终止循环。这样我们的第一个节点就做好了,这个节点里既存放了我们的data数据,还存放了下一个节点的地址,我们就可以通过解引用next找到我们的下一个节点。原创 2024-04-10 20:41:04 · 735 阅读 · 0 评论 -
C数据结构:队列
双向链表也很好,但是我们需要多定义一个prev指针,我们在出队和入队的过程中并不是很需要这个prev指针(如果只是为了出队方便完全可以定义一个队头节点的指针一直指向队头即可), 如果多了一个prev指针那么就意味着我们需要多维护一个指针变量,并且还会多消耗一点空间。队列这种特殊的结构既可以通过数组的方式实现,也可以链表的方式来实现,这时候就要考虑它两的优缺点来决定使用谁来实现了。这个QNode是必须要定义的,这是链表的基础,为了完成我们的队列而创建的,这是我们底层的结构。原创 2024-05-12 01:07:25 · 837 阅读 · 0 评论 -
C数据结构:顺序表
数据结构是什么?为什么我们需要数据结构?数据结构是计算机存储、组织数据的方式1. 能够存储数据2. 存储的数据能够方便查找顺序表本质可以理解为是一个数组我们需要对这个数组进行有效的增删查改方面的操作,进行有效的管理,所有有了顺序表。原创 2024-04-05 21:45:03 · 908 阅读 · 0 评论 -
C数据结构:二叉树
这里二叉树是使用了链式存储data负责存储数据,left指针负责存储左孩子节点,right负责存储右孩子节点。原创 2024-05-27 22:44:39 · 1034 阅读 · 0 评论 -
C数据结构:栈
栈是一种特殊结构的线性表先来看看栈的图之所以说它特殊,是因为它的插入删除功能比较特殊栈的插入也叫作栈的插入只能在栈顶插入栈的删除也叫作栈的删除只能在栈顶删除。原创 2024-05-08 20:57:47 · 1028 阅读 · 0 评论 -
C数据结构:堆(实现、排序)
这时候就已经不是一个堆了,那么我们就需要用向下调整算法让第一个节点向下调整,使之重新成为一个堆,让最后的end--(也就是将我们刚刚找到的最大的数据或最小的数据排除在外),循环结束时我们的排序也就做完了。堆排的思想是先让堆顶最大(或最小的元素放到最后),然后把最后一个节点排除在外将其他节点看成一个堆,重新找出第二大(或第二小的元素放到倒数第二个位置),以此往复即可将数组顺序排好。在循环中,若第二个孩子节点的值小于第一个孩子的值,则child++,就能找到两个孩子节点中小的那一个。原创 2024-05-20 16:33:26 · 596 阅读 · 0 评论 -
C数据结构:双向链表(带头循环)
链表分多种,分别为不带头不循环单向链表、不带头循环单向链表、带头循环单向链表、带头不循环单向链表不带头不循环双向链表、不带头循环双向链表、带头循环双向链表、带头不循环双向链表一共八种在前一篇博客中完成的单链表即为不带头不循环单向链表而今天要完成的是带头循环双向链表。原创 2024-04-14 15:11:11 · 602 阅读 · 0 评论 -
C数据结构:排序
若按照错误方法来:例如:begin = 0,end = 3,那么mid = 1,begin1 = 0,end1 = 2,递归左右区间为[0,2]也就是begin = 0,end = 2,那么mid = 1,begin1 = 0,end1 = 2,这样又递归就会出现栈溢出的情况,所以必须要按照 上面代码的方式走。然后这个for循环做的就是遍历原数组,将原数组的值减去最小值,这个值映射到count数组中,让这个下标的值++,这样就会统计这个值出现的次数,而与原数组建立的关系就是减去一个min的关系。原创 2024-06-12 17:26:51 · 1086 阅读 · 1 评论 -
C顺序表:通讯录
数据结构中的顺序表如果已经学会了,那么我们就可以基于顺序表来完成一个通讯录了通讯录其实我们使用前面学习过的顺序表就能完成不过,相比较来说,前面的顺序表就是个整型数组,但通讯录就是一个多信息的自定义类型了如果没了解过顺序表的可以看看我前篇博客下面直接来开始完成我们的通讯录吧。原创 2024-04-07 21:43:26 · 828 阅读 · 0 评论