数据结构
凤梨罐头@
冷静,专注,思考
展开
-
【零基础学会数据结构】---队列
文章目录队列队列的存储队列队列的存储原创 2021-12-06 14:00:00 · 334 阅读 · 14 评论 -
【零基础学会数据结构】---栈
文章目录栈栈的实现栈栈的实现原创 2021-12-04 19:37:39 · 306 阅读 · 14 评论 -
【零基础学会数据结构】---单链表
文章目录单链表单链表代码分析第一步 结构体的创建单链表新结点的空间申请单链表的尾插单链表的头插单链表的尾删单链表的头删单链表打印单链表查找数字单链表指定位置的前面插入单链表指定位置删除单链表指定位置的尾删单链表的销毁单链表的传参单链表代码Slist.c(单链表头文件)单链表代码测试(test.c)单链表单链表:概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。单链表代码分析第一步 结构体的创建1.创建存储数据的data。2.创建结构原创 2021-12-02 21:27:06 · 1176 阅读 · 6 评论 -
【零基础学会数据结构】---堆排序与topk问题
文章目录堆的向上调整法堆的向上调整法的局限性堆的向下调整法堆的向下调整法的局限性堆顶数据的删除topk问题topk问题的使用场景topk问题的解决方法堆排序向上调整建堆向下调整建堆堆排序代码前面一节我们学习了堆的实现—【零基础学会数据结构】—堆接下来我们进行堆排序和topk问题的学习。堆的向上调整法堆的向上调整法可用于对堆结构的修复。代码:堆的向上调整法的局限性堆的向下调整法堆的向下调整法也是用于对堆结构的修复。代码:堆的向下调整法的局限性堆的向下调整法也具有一定的局限性,大致和原创 2021-12-01 16:05:13 · 504 阅读 · 13 评论 -
【零基础学会数据结构】---树
文章目录什么是树树的概念树的相关概念树的表示法孩子兄弟法二叉树二叉树的概念满二叉树完全二叉树满二叉树的概念什么是树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树的概念1.有一个特殊的结点,称为根结点,根节点没有前驱结点2.除根节点外,其余结点被分成M(M>0)个互不相交的集合T1,T2…Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每原创 2021-11-29 19:24:34 · 619 阅读 · 10 评论 -
【零基础学会数据结构】---堆
文章目录什么是堆什么是堆原创 2021-11-29 10:24:13 · 271 阅读 · 2 评论 -
【LeetCode刷题系列】---138. 复制带随机指针的链表
代码:方法:一共分为三步:1.将要复制的链表的数据依次插入到系统给的链表里如图所示2.可以看出当系统给的链表的random指针为空时,复制链表的random指针也为空。当系统给的链表的random指针不为空时,复制链表的random指针就是系统给的链表的random指针指向的结点的next。所以第二步就是给复制链表的random指针赋值。如图:第三步,将复制链表从系统给的链表中解出来,形成一个单独的链表。并将系统的链表还回原样。...原创 2021-11-20 19:18:03 · 337 阅读 · 0 评论 -
链表带环问题推论与证明
文章目录什么是链表带环问题如何判断一个链表是否带环判断链表是否带环问题练习:链表带环延申问题一为什么fast和slow是在环中相遇?为什么slow和fast会相遇,而不是fast会和slow错过,永远都不相遇?链表带环延申问题二:为什么慢指针一次走一步,快指针一次走两步,快指针一次走三步,四步,n步不行吗?判断链表带环位置练习题判断链表带环位置推导过程什么是链表带环问题链表带环问题就是链表中的某个结点的next指针指向了前面的一个结点,从而产生了一个环状。如图所示:如何判断一个链表是否带环方法:原创 2021-11-20 18:54:28 · 448 阅读 · 0 评论 -
【牛客刷题系列】---CM11.链表分割
方法一:创建两个不带头结点的单链表,代码:class Partition {public:ListNode* partition(ListNode* pHead, int x) {struct ListNode *greaterhead,*lesshead,*greatertail,*lesstail,*cur;cur=pHead;greaterhead=lesshead=greatertail=lesstail=NULL;while(cur!=NULL){if(cur->val&.原创 2021-11-14 10:59:31 · 113 阅读 · 0 评论 -
【LeetCode刷题系列】---160. 相交链表
代码:方法;先判断两个链表是否相交,如果两个链表的尾结点相同,说明两个链表相交。如果链表不相交就返回NULL,反之,求出两个链表的长度和两个链表长度差的绝对指,这里设为lenc,让更长的链表先走lenc步,再让两个链表一起走,当两个链表的结点相同时,那个结点就是相交的结点。...原创 2021-11-15 20:16:25 · 85 阅读 · 0 评论 -
【牛客刷题系列】---OR36 链表的回文结构
方法:先找到链表的中间结点,再将中间结点及以后的结点进行逆转,最后再进行逐一比对。代码:原创 2021-11-15 20:02:37 · 229 阅读 · 0 评论 -
【零基础学会数据结构】--顺序表
文章目录什么是顺序表静态顺序表静态顺序表代码函数接口概念动态顺序表顺序表的代码呈现(为了让代码趋于工作化,以下代码进行了分文件书写)代码一:函数接口的声明代码二:函数接口的实现代码三:函数接口的测试顺序表的代码分析第一步 结构体的创建结构体的初始化结构体的扩容操作顺序表的尾部插入顺序表的尾部删除顺序表的头部插入顺序表的头删顺序表的打印操作顺序表的销毁顺序表的传参(非常重要)什么是顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。原创 2021-11-05 14:58:40 · 426 阅读 · 2 评论 -
【零基础学会数据结构】--时间复杂度与空间复杂度
文章目录什么是数据结构?什么是算法?算法效率时间复杂度如何计算一个算法的执行时间举例一大O渐近表示法推导大O阶法举例二(时间复杂度的计算)举例三(冒泡排序时间的时间复杂度)举例四(二分查找算法的时间复杂度)举例五(递归算法的时间复杂度)空间复杂度举例六(冒泡排序的空间复杂度)举例八(递归数列的空间复杂度)常见复杂度对比![在这里插入图片描述](https://img-blog.csdnimg.cn/145b4d8559834546a819a24acac3646d.png?x-oss-process=imag原创 2021-10-14 14:30:00 · 613 阅读 · 21 评论