数据结构
文章平均质量分 52
Hhh __灏
这个作者很懒,什么都没留下…
展开
-
顺序表和链表的区别和联系
从内存加载时访问内存的地址及其后面的一段,与硬件相关,因为它加载当前位置和该位置后面一段的成本差不多,并且也可以认为是当你访问这个数据时,你即将访问附近的数据,当你访问顺序表时缓存能快速命中,这就是顺序表的优势,链表就不一定能访问。链表能做的事,顺序表都可以完成,只是操作方法不同,效率不同。2、不在高速缓存从内存加载数据到缓存,再访问。所以如果不是要大量头插头删,用顺序表会更快。1、先查数据是否在高速缓存,在就直接访问。原创 2023-12-21 23:32:23 · 375 阅读 · 0 评论 -
如何使用C语言实现队列?
队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。先进先出FIFO(First In First Out)只允许一端插入数据,另一端删除数据的特殊线性表。进行插入操作的一端称为。进行删除操作的一端称为。原创 2023-12-21 23:25:52 · 531 阅读 · 0 评论 -
如何使用C语言实现栈?
栈中的数据元素遵守后进先出LIFO(Last In First Out)。,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。压栈:栈的插入操作叫做进栈/压栈/入栈,出栈:栈的删除操作叫做出栈。栈的实现一般可以使用。原创 2023-12-21 23:23:36 · 403 阅读 · 0 评论 -
如何使用C语言实现单向链表?
1、使用结构体定义一个节点的原型,包括存储数据的data和指向下一个节点的指针next。2、利用next遍历整个链表,直到遇到NULL,打印链表数据。5、释放头结点,并且连起下一个节点。6、释放尾节点,并且next置空。写代码的IDE是vs2019。3、开辟新节点,插入链表的头。7、遍历查找,返回找到的地址。原创 2023-12-21 23:15:20 · 522 阅读 · 0 评论 -
图片理解链表的逻辑结构和物理结构
哨兵位不存储有效数据,优势是尾插时不需要判断NULL并赋值,直接在tail后面链接,哨兵位就是为了方便插入增加的一个节点。第二个优势:哨兵位是一种取巧的方式 ,他不需要二级指针改变头指针,只需要改变哨兵位的指针。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了。物理结构:实际内存中,实实在在真实的样子。逻辑结构:为了方便形象理解,想象出来的。、非顺序的存储结构,数据元素的。原创 2023-12-21 22:43:44 · 352 阅读 · 0 评论 -
异或的理解和应用——消失的数字
没错是9,前面两两相同的异或结果是0,最后0和9异或根据2的结论,结果就是9。3、再复杂一点,5 5 4 4 3 3 2 2 1 1,这数字全部一起异或,由于两辆异或相同为0,所以一起异或结果是0。0^5,由于二进制位中,0和0异或相同为0,1和0异或相异为1,所以0异或5答案还是5。思路:1、排序,依次查找,如果下一个数不是上一个数+1,那么上一个数+1就是消失的数字。第一次循环N次,第二次N+1次,O(2N+1),1忽略,2忽略,O(N)。按位异或,相同为0,相异为1。原创 2023-11-16 06:26:24 · 86 阅读 · 0 评论 -
轮转数组中三段置换的理解和使用
所谓轮转就是像轮子一样转,我们把数组比作是一条车链,把数组1,2,3,4,5,6,7向右边移动,后面的7会轮转到最开始的1的位置,如此循环,比如数组向右移动1位数组就是7 ,1,2,3,4,5,6.总结:三段置换应用再逆序和旋转的领域十分有用,逆序逆序再逆序,十分简单好用,在遇到数组有关旋转的地方可以多多注意使用。给定一个正数数组nums,将数组的元素向右轮转K个位置,其中k是非负数。——题目来源leetcode可以搜轮转数组。直接分段复制到临时数组,用空间换时间。原创 2023-11-16 06:07:13 · 46 阅读 · 0 评论 -
什么是空间复杂度?空间复杂度有什么用?
空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度用于描述变量在内存创建的次数,深入理解函数栈帧有助于深入计算和理解空间复杂度。两个地址一样,是因为用了func1后,销毁了,再次调用func2,还是在同一个地方。空间复杂度也是一个数学表达式,是对一个算法在运行过程中。空间复杂度计算规则基本跟时间复杂度类似,也使用。空间是可以重复利用的 不累积。时间是一去不复返的,累积计算。函数运行时所需要的栈空间。原创 2023-11-16 05:36:41 · 74 阅读 · 0 评论 -
什么是数据结构?怎么学好数据结构?
数据结构就是实现在内存中存储管理数据,建立数据间的关系。数据间的关系可以是线性(顺序表、链表等),也可以是非线性(二叉树、哈希、图等)。数据存储起来以后,方便我们去展示、查询等等。算法是什么?官方一点算法(Algorithm):就是定义良好的计算过程,他取一个或者一组得值的输入,并且产生一个或者一组的值作为输出。简单来说就算法就是一系列的计算步骤,用来将输入数据转化为输出结果。白话一点算法就是利用计算机处理问题的步骤,简而言之,就是解决问题的步骤。原创 2023-11-13 02:17:32 · 42 阅读 · 0 评论 -
时间复杂度是什么意思?有什么用?
总而言之,时间复杂度就是根据你的思维或者代码计算出你的程序运行的大概次数,这个次数计算方法不是唯一的,而且是大概的,但是算出的结果是分等级的,比如O(N)这个等级就比O(N。原创 2023-11-13 02:13:42 · 73 阅读 · 0 评论