C语言中LinkedList的逻辑
我刚开始学习数据结构,今天我看了一段关于C语言中LinkedList的视频。由于我在课堂上学到了很多知识,我可以理解其中的大部分内容,但有一件事我不懂 在视频中,我们将其解释为,创建一个节点结构,然后为其分配内存。假设其中有两种数据类型,即整数和指针。假设我们有5个这样的节点,每个指针保留下一个节点的地址。到目前为止没有问题。但我不明白的是,每当我们调用函数时,这个指针是如何保持下一个元素的地址的。它是如何通过头部节点和我们寻找的其他节点之间的其他元素的?如果有人能解释,那就太好了 谢谢。指针不会“穿过”其他元素。每个元素只存储下一个元素的地址 这就像寻找复活节彩蛋,每个彩蛋都有下一个彩蛋的线索。(除了它们不是线索,它们只是告诉你鸡蛋在哪里) 厨房里有一张便条(变量C语言中LinkedList的逻辑,c,list,pointers,structure,dev-c++,C,List,Pointers,Structure,Dev C++,我刚开始学习数据结构,今天我看了一段关于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如果您想从链接列表中删除邮箱节点,你会扔掉鸡蛋和妈妈的纸条