C语言中LinkedList的逻辑

C语言中LinkedList的逻辑,c,list,pointers,structure,dev-c++,C,List,Pointers,Structure,Dev C++,我刚开始学习数据结构,今天我看了一段关于C语言中LinkedList的视频。由于我在课堂上学到了很多知识,我可以理解其中的大部分内容,但有一件事我不懂 在视频中,我们将其解释为,创建一个节点结构,然后为其分配内存。假设其中有两种数据类型,即整数和指针。假设我们有5个这样的节点,每个指针保留下一个节点的地址。到目前为止没有问题。但我不明白的是,每当我们调用函数时,这个指针是如何保持下一个元素的地址的。它是如何通过头部节点和我们寻找的其他节点之间的其他元素的?如果有人能解释,那就太好了 谢谢。指针不

我刚开始学习数据结构,今天我看了一段关于C语言中LinkedList的视频。由于我在课堂上学到了很多知识,我可以理解其中的大部分内容,但有一件事我不懂

在视频中,我们将其解释为,创建一个节点结构,然后为其分配内存。假设其中有两种数据类型,即整数和指针。假设我们有5个这样的节点,每个指针保留下一个节点的地址。到目前为止没有问题。但我不明白的是,每当我们调用函数时,这个指针是如何保持下一个元素的地址的。它是如何通过头部节点和我们寻找的其他节点之间的其他元素的?如果有人能解释,那就太好了

谢谢。

指针不会“穿过”其他元素。每个元素只存储下一个元素的地址

这就像寻找复活节彩蛋,每个彩蛋都有下一个彩蛋的线索。(除了它们不是线索,它们只是告诉你鸡蛋在哪里)

厨房里有一张便条(变量
head
),上面写着“邮箱里有一个鸡蛋”。那是头指针

邮箱里有一个鸡蛋(
data
)和一张便条(
next
),上面写着“烤箱里有一个鸡蛋”。这是第一个节点

烤箱里有一个鸡蛋(
data
)和一张便条(
next
),上面写着“车下有一个鸡蛋”。 这是第二个节点

车下有一个鸡蛋(
data
)和一张便条(
next
),上面写着“车库里有一个鸡蛋”。这是第三个节点

车库里有一个鸡蛋(
data
)和一张便条(
next
),上面写着“没有鸡蛋了”(一个空指针)。这是第四个节点,最后一个

这些音符不会互相“保留”,也不会互相“传递”或诸如此类的东西。它们只是纸条

当你写
head->next->next->data
时,它的意思是:“看看厨房里的
head
注释(编译器已经知道这个注释在哪里了)。然后去它说的地方,看下一个注释。然后去它说的地方,看下一个注释。然后去它说的地方,看下一个注释。数据。”

指令不会让笔记做事情(或鸡蛋),而是让你(CPU)做事情。音符不会在重新洗牌时四处乱跑——你会四处乱跑看音符。

指针不会“穿过”其他元素。每个元素只存储下一个元素的地址

这就像寻找复活节彩蛋,每个彩蛋都有下一个彩蛋的线索。(除了它们不是线索,它们只是告诉你鸡蛋在哪里)

厨房里有一张便条(变量
head
),上面写着“邮箱里有一个鸡蛋”。那是头指针

邮箱里有一个鸡蛋(
data
)和一张便条(
next
),上面写着“烤箱里有一个鸡蛋”。这是第一个节点

烤箱里有一个鸡蛋(
data
)和一张便条(
next
),上面写着“车下有一个鸡蛋”。 这是第二个节点

车下有一个鸡蛋(
data
)和一张便条(
next
),上面写着“车库里有一个鸡蛋”。这是第三个节点

车库里有一个鸡蛋(
data
)和一张便条(
next
),上面写着“没有鸡蛋了”(一个空指针)。这是第四个节点,最后一个

这些音符不会互相“保留”,也不会互相“传递”或诸如此类的东西。它们只是纸条

当你写
head->next->next->data
时,它的意思是:“看看厨房里的
head
注释(编译器已经知道这个注释在哪里了)。然后去它说的地方,看下一个注释。然后去它说的地方,看下一个注释。然后去它说的地方,看下一个注释。数据。”


指令不会让笔记做事情(或鸡蛋),而是让你(CPU)做事情。笔记不会到处乱跑,而是重新洗牌-你到处乱跑,看笔记。

程序一旦终止或你
释放内存,指针就不会保留地址。但是当程序运行时,指针有它的值,所以它指向系统分配的内存位置。因此,每次调用该函数时,它都会取消对该mem的引用。地址。假设它以
head->next->next->int
开头。因此,在这里,它从
head
传递到包含另一个内存地址的
next
,因此它移动到
next
地址,依此类推,然后找到
int
,然后它停止。结论:它从
head
开始,经过
下一个
指针,指向存储值的
指针。一旦程序终止或
释放内存,指针就不会保留地址。但是当程序运行时,指针有它的值,所以它指向系统分配的内存位置。因此,每次调用该函数时,它都会取消对该mem的引用。地址。假设它以
head->next->next->int
开头。因此,在这里,它从
head
传递到包含另一个内存地址的
next
,因此它移动到
next
地址,依此类推,然后找到
int
,然后它停止。结论:它从
head
开始,经过
next
指针,指向存储您的值的
指针。因此,基本上我们将下一个指针的地址指定给head指针,并继续这样做?@mytheman如果您想从链接列表中删除邮箱节点,你会扔掉鸡蛋和妈妈的纸条