当你打开地图 APP 规划出行路线时,是否想过背后的数据结构在默默 “工作”?从 A 地到 B 地的多条路径、不同道路的距离(权重)、单行道(有向)限制,这些都...
在数据结构中,栈的 “后进先出” 特性广为人知,上一篇我们聊了基于数组的顺序栈,它虽高效但容量固定,容易出现栈溢出或内存浪费的问题。今天就来介绍一种更灵活的实现...
在 C 语言数据结构学习中,单链表是最基础也最常用的线性结构之一。但单链表的特性决定了它无法像数组那样随机访问元素,这使得 “找倒数节点”“删中心节点”“判断循...
在数据结构的世界里,图是一种比数组、链表、树更为复杂的非线性结构,它能够轻松表示现实生活中多对多的关系,比如社交网络中的好友关系、城市交通路线中的站点连接等。而...
在数据结构的世界里,单链表就像一条灵活的 “链子”,它由一个个 “链节”(节点)串联而成,能够高效地存储和操作数据。相比于数组,单链表在数据插入、删除等操作上具...
单链表的反转本质是调整节点指针指向,将原本 “后继指向” 改为 “前驱指向”。给定代码中,通过三个指针(first、second、third)实现高效反转:初始...
队列要求先入先出,用数组实现要挪数据,效率非常低。双向链表实现非常方便但是占用内存比单链表多,所以在这里我们选择用单链表实现。
双向链表可以通过前一个元素直接访问上一个元素,这使得在双向链表中实现栈的出栈功能更加高效和方便。因为双向链表可以从尾部直接访问到最后一个元素,从而实现了栈的后...
前面我们实现了单链表,单链表只是链表的一种。可以根据以下几个标准来判断链表的类型:
链表中的节点通过指针域相互连接起来,形成一个链式结构。当我们创建一个新的节点时,我们将前一个节点的指针域指向新节点,从而将新节点连接到链表中。具体来说,当我们在...
. - 力扣(LeetCode) 如果链表的两条链的长度一样,链表两端对齐,解决这个问题将会变得非常简单,直接分别遍历两个链表,想等时的节点即为所求。我们想...
想要实现队列,首先要想清楚要用什么实现队列 之前,我们依次实现了顺序表、链表以及栈,他们都是用数组或链表来实现的
现在学了自定义函数、枚举类型、数据结构、动态内存管理 (完成贪吃蛇要具备的基础知识)
这时候我想到了龟兔赛跑的故事 我们可以用一个快指针,一个慢指针来遍历链表 一个每次走2步,一个每次走1步,这样快指针每次就一定会比慢指针快一步
而定义链表的时候,每个空间既要定义值,还要指向下一个结点,每个节点内有两个成员,除此之外对于该链表再创建一个结构体分别指向ptail和phead,所以对于链表来...
使用链表来实现栈时,栈的核心操作(入栈,出栈)都可以在链表的头部进行操作,时间复杂度都是O(1)
虽然有这么多的链表的结构,但是在实际中最常用的还是两种结构:单链表(不带头单向不循环链表)和双向链表(带头双向循环链表)
简单来说,如果链表带环,链表尾节点的next指针不会直接置为空,且遍历链表是一个死循环的
这里定义一下链表的结构,由于链表是由一个个节点组成,所以定义链表的结构即定义节点的结构
由于新链表的节点不是重新 malloc 开辟的新空间,而是直接将原链表中 “值不为 val” 的节点 “拿过来”,通过修改指针指向,将其串联到新链表中。,原链表...