![](https://i-blog.csdnimg.cn/direct/e20f5871d0e54a89ae9d5fa67c0b75d9.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 95
介绍数据结构相关知识
ZLRRLZ
永远相信美好的事情即将发生
展开
-
【初阶数据结构】顺序表与链表的比较(附题)
以上图i++为例,程序运行后由CPU来执行一系列指令,但是CPU的速度与内存的速度相差非常大,两者不同频,所以将内存中的数据加载到寄存器中,CPU再对寄存器中的数据进行操作,然后将数据放回内存中,这是数据较小的情况(四或八个字节),如果数据较大,就会加载到L3高速缓存中,然后L2,L1一级一级加载。像顺序表和链表中的数据较大,是加载到缓存中的,CPU执行指令之前,会先拿链表或顺序表的地址,判断数据在不在缓存中,如果数据在缓存中,叫做缓存吗,命中,可以直接访问缓存;单次扩容小,扩容次数多,节省空间。原创 2024-08-22 16:30:43 · 677 阅读 · 1 评论 -
【初阶数据结构】算法复杂度
对于我们所要解决的问题来说,解决的方法各有不同,每个人各有各的道理,并且受制于所用的设备的性能环境不同,我们很难精确比较一些方法不太明显的差别,因此,如何脱离环境直接衡量一个算法本身的好坏呢?斐波那契数列的递归实现方式非常简洁,对于我们的直观感受来说越简洁的算法似乎越好,但简洁一定好吗?那该如何衡量其好与坏呢?原创 2024-08-20 21:48:06 · 722 阅读 · 4 评论 -
【初阶数据结构】数据结构前言
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。原创 2024-08-18 08:39:41 · 257 阅读 · 0 评论 -
【初阶数据结构】链表(附题)
在定义节点存储数据类型时,我们想保存的数据类型可能为整形,字符型、浮点型或者其他自定义的类型,因此,为了适应不同情形下,存储数据的不同,我们为要存储的数据起别名,定义时直接使用别名。//节点数据//指针保存下一个节点的地址}SLTNode;//指针保存下一个节点的地址//指针保存前一个节点的地址}LTNode;双向链表节点的结构体内,除了保存的值外,还有指向下一个节点的指针以及指向前一个节点的指针,这样双向链表可以既可以向前也可以向后访问。原创 2024-08-17 22:35:00 · 1045 阅读 · 7 评论 -
【初阶数据结构】栈和队列(附题目)
栈的初始化中,需要注意的是_top的初始值初始化为-1与初始化为0是截然不同的。我们知道,head是指向队列的头,tail指向尾的下一位,因为我们多开了一个空间,并且是按序的空出空间,因此,当数组满时,尾的空间后面就是空空间,tail指向它,这时如果tail再向前走一步,就与head相等,不过这时,为了避免出现越界的情况,tail+1需要%(K+1),这就相当于tail+1>5时,tail+1-5,tail回到数组开头,同时数组越界的情况是相对与数组总长的,因此这里是%(k+1)不是%k.原创 2024-05-30 00:18:00 · 1262 阅读 · 11 评论 -
【初阶数据结构】:顺序表及其通讯录应用
线性表(linear list)是n个具有相同特性的数据元素的有限序列。具有逻辑上线性,物理存储上不一定连续的特性。线性表是⼀种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...底层创建定长数组来存储元素,为对数组进行增删查改的操作,我们还需要创建一个变量来记录已存放有效的数据个数。动态顺序表定义时,不会直接创建,大小固定的数组,而是创建一个指针来配合之后的realloc来动态申请空间使用。原创 2024-04-21 23:31:02 · 1114 阅读 · 18 评论 -
【初阶数据结构】二叉树(附题)
二叉树是:1. 空树2. 非空:根结点,根结点的左子树、根结点的右子树组成的。从概念中可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的。原创 2024-06-21 12:58:27 · 849 阅读 · 4 评论 -
【初阶数据结构】链表经典OJ(8道)
2.首先当链表节点个数为奇数时,中间节点有两个,我们需要返回下一个中间节点,这种情况下,快慢指针也可以解决,当slow指针走到前一个中间节点时,fast才走到尾节点的前一个节点,但是需要注意的是,当slow走到下一个中间节点时,fast会走到尾节点的下一个指针,即fast会变成空指针,我们根据fast为空结束循环,直接返回slow。新链表的random指向不是指向原链表中的节点,而是新的节点,得到的新链表与原链表出指针指向的空间不同,其他的val值,指针指向的相对位置关系都一致。笔者接下来论证一下。原创 2024-05-16 22:20:46 · 972 阅读 · 6 评论