![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构个人笔记
文章平均质量分 71
完全感覚Dreamerr
这个作者很懒,什么都没留下…
展开
-
力扣206. 反转链表 多解&个人踩的坑
最直接的想法,利用使用beg,mid,end三个指针,在向后访问过程中将原链表中指针例如1→2转为1←2踩的坑执行出错:堆在释放后使用(heap-use-after-free),一般和随意释放内存有关。但是我并没有动态分配内存未设置原头指针next为null,第一个元素仍然指向第二个元素,因而导致第一二个元素间形成了一个环,可能会倒置判题内部程序出现这样的问题吧?原创 2023-11-30 22:47:26 · 913 阅读 · 0 评论 -
基于双亲表示法实现树的遍历(包含非递归版前序遍历)
借助栈实现,根结点出栈时就输出(先访问根结点),后将子节点倒序入栈(倒序是为了保证长子结点在栈顶,先被访问)这样的方式解决了访问节点孩子困难的问题。这也引出了双亲表示法的一大缺陷:根据parent指针很容易访问双亲结点,但是。前序按照 根-左-右的顺序访问,先访问输出根结点,再递归访问子树。由于是后序遍历,先“递”,访问子树,后“归”,访问输出根结点。存储结构的设计是一个很灵活的过程,下面给出。结合孩子表示法,存储每个根结点的。思路很正确,但是这样的访问方式。考虑到该存储方式从左至右有序,原创 2023-11-15 23:11:39 · 172 阅读 · 0 评论 -
各类排序C语言实现 及部分优化
设数组为【3,1,2,4,6,5,7,8,9】,数组末尾为较大元素,且较为有序。解决办法:记录每次冒泡过程中,发生元素交换的最大位置,并将其设为下一次冒泡的最大上界(该位置后元素已有序,且较大)分析:直接插入排序主要的时间复杂度来自顺序查找,而位置i前顺序表完全有序,采用二分查找的方式可以优化该算法。空出r[0]作为监视哨,存储r[i]数据.同时,空出r[0],还可以防止溢出。原因很简单,我们要确保排序稳定,因而需要在元素值相同时插入在最大的位置上。这里选取gap,gap/2,···,1为递增序列。原创 2023-11-04 10:45:15 · 66 阅读 · 1 评论 -
顺序栈&链栈C语言实现
int* base;int* top;//栈顶向上增长}SqStack;int data;原创 2023-10-31 10:03:32 · 36 阅读 · 1 评论 -
循环链表/双向循环链表 C语言实现
两个指针域,一个指向直接前驱,另一个指向直接后继int data;原创 2023-10-11 19:50:49 · 36 阅读 · 0 评论 -
静态链表(图一乐)c语言具体实现
使用游标cur(表示下一个元素数组下标)代替next指针1000//链表最大长度int data;int cur;//直接定义数组。原创 2023-10-09 17:09:31 · 39 阅读 · 1 评论 -
数据结构03 单链表(插入,删除,查找等操作)基于C语言的实现
结点定义为结构体(包含数据+指针)int data;//Linklist 为指向LNode指针,表示整个链表头指针。原创 2023-09-24 19:26:00 · 168 阅读 · 1 评论 -
数据结构02 顺序表基本操作大全
特征。原创 2023-09-24 11:42:55 · 25 阅读 · 1 评论 -
数据结构01 basic part
从上述表中可见,随着n增大,执行次数中较低次项与最高次项相比,可忽略不计。因此,时间复杂度只保留最高次项,并将系数记为1(即忽略加法常数)一般情况下,时间复杂度考虑最坏情况,即执行次数最多情况。,其中 f(n)为问题规模n的函数。忽略系数及低次项,得时间复杂度为。物理结构:计算机中存储形式。计算算法所需存储空间。原创 2023-09-24 10:52:15 · 37 阅读 · 1 评论