数据结构
文章平均质量分 72
勤奋的懒羊羊~
少年有梦,不应止于心动
展开
-
图【数据结构】
图的抽象数据类型定义如下:ADT Graph数据对象V:具有相同特性的数据元素的集合,称为顶点集。数据关系R:R={VR}VR={<v,w>表示从v到w的弧,P(v,w)定义了弧<v,w>的信息基本操作P::图的创建操作。初始条件:无。操作结果:生成一个没有顶点的空图G。:求图中的顶点v的值。初始条件:图G存在,v是图中的一个顶点。操作结果:生成一个没有顶点的空图G。初始条件:V是图的顶点集,VR是图中弧的集合。操作结果:按V和VR的定义构造图G。原创 2023-05-28 21:26:48 · 1364 阅读 · 1 评论 -
哈夫曼树(Huffman)【数据结构】
假如原创 2023-05-28 21:08:05 · 12811 阅读 · 1 评论 -
二叉树相关基础选择填空题
由后序遍历确定子树的根,后序遍历从后向前看,最后一个元素为根,和前序遍历刚好相反,从后向前看后序遍历,应该是根,右,左,根据中序遍历确定子树的左右区间。如果为四层,就是单边树,每一层只有一个节点,除过根节点,其他节点都有两种选择,在上层节点的左边还是右边,所以2*2*2共8种。B的左子树:JGDHK B的右子树:空 C的左子树:ELIM C的右子树:F。7的左子树: 4 7的右:空 9的左子树:6 9的右子树:2。D的左子树的根:G D的右子树的根:H E的右子树的根:I。答案:总共为14种。原创 2023-04-16 13:47:29 · 594 阅读 · 0 评论 -
常见排序算法
2、记录{100,101,102,103,104,105,106,107,108,109}中每个数出现的次数,并用countA数组存起来(此例countA={2,1,1,0,0,2,0,0,0,1})数据量很小时,用快排其实是很麻烦的,因此,当快排递归到最后几层时,递归的区间很小,我们可以选择用插入排序,这样快排的效率就大大优化了。取出栈中区间0-4,进行一轮排序后,得到>keyi的区间和原创 2023-04-15 21:00:53 · 608 阅读 · 2 评论 -
队列实现栈 \ 栈实现队列 \ 循环队列
Queue q1;Queue q2;} MyStack;为什么下面要malloc而不是直接MyStack obj;因为MyStack obj;obj是局部变量,出作用域就直接销毁了//初始化两个队列return obj;ST pushst;ST popst;} MyQueue;return pst;原创 2023-03-27 14:36:28 · 374 阅读 · 0 评论 -
复制带随机指针的链表
本题是学习链表的试金石,如果能够轻松写出来,说明你链表学的非常不错噢!原创 2023-03-19 16:24:12 · 67 阅读 · 1 评论 -
链表相关题目【题解】
给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。注意:这里我们用两个带哨兵位的头结点的链表,可以很好地减少空指针的问题,减少需要考虑的特殊情况。首先,创建两个链表,分别放小于x的结点和大于x的结点(通过尾插的方式),再将两个链表链接起来。第一步:分别计算两个链表的长度,求出两链表的长度差。第一步:找到第二个中间结点,也就是后半链表的头。原创 2023-03-12 09:06:01 · 563 阅读 · 4 评论 -
链表带环问题
给你一个链表的头节点 head ,判断链表中是否有环。原创 2023-03-12 08:59:35 · 280 阅读 · 0 评论 -
单链表的增删查改
单链表其实更适合用这种方式插入,如果没有头指针想实现pos前插入,可以先在pos后插入,然后再将前后Data交换。pos前位置插入其实比pos后插入要麻烦一点,因为我们要先用头指针遍历一遍来找到pos前的位置。同理:当链表一开始为空时,我们要把新开的空间的地址,也就是newnode赋给plist,在写头插时,我们发现它也需要开一个新结点,所以我们可以分装一个创建结点的函数。plist是一个结构体一级指针,要改它,我们应该给函数传一个二级指针。当我们想要改变一个int类型的数时,我们需要给函数传int*原创 2023-03-03 09:18:27 · 103 阅读 · 0 评论 -
空间复杂度
空间复杂度不是程序占用了多少bytes的空间,而是变量的个数,空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。空间复杂度为O(N)空间复杂度也是一个数学表达式,是对一个算法在运行过程中。使用了常数个额外空间,所以空间复杂度为O(1)。动态开辟了N个空间,所以空间复杂度为O(N)原创 2023-02-22 12:39:57 · 64 阅读 · 3 评论 -
算法的时间复杂度
算法在编写成可执行程序后,运行时需要消耗时间资源和空间(内存)资源,因此衡量一个算法的好坏,一般是从。实际计算时间复杂度时,我们并不需要计算精确的执行次数,而只需要大概执行次数,那么这里我们使用大O的渐进表示法。最坏是(N*(N+1))/2次,通过推导大O阶方法+时间复杂度一般看最坏,时间复杂度为O(N^2).2^x=N,x=logN(logN在算法分析中表示以2为底数,N为对数,有些地方也写成lg N)该例子为冒泡排序,最好的情况为,比较完一轮(N-1次)后,发现就顺序的,所以最好是N次。原创 2023-02-18 22:07:19 · 456 阅读 · 3 评论