究竟什么是动态链表? [关闭]

问题描述 投票:0回答:1

我必须在C中创建一个动态链接列表,但我不确定我到底要做什么。什么意思是动态的?这是一个列表,你知道哪个节点在哪里找到(* p到每个节点的数组?但是这样,它仍然被认为是链表?)或类似每个节点都有* p到下一个节点?或者如果用户说他想知道节点的确切位置,有没有办法准确地去那个位置?

c linked-list structure theory
1个回答
1
投票

在C中,单词dynamic通常意味着从堆中分配,而不是静态,它指的是在编译时定义和/或初始化的全局对象。

我个人从未使用过术语动态链表。列表项在运行时(因此动态分配)从堆中分配似乎很自然。然而,可以定义在编译时作为列表链接的静态对象。在某些情况下,我可能已经使用过这种方法。

可以在列表中使用第三种类型的对象:具有自动存储的节点,其被定义为局部变量。这是可能的,但非常棘手,因为当函数退出时这些对象超出范围,因此如果列表仍然链接到它们,则列表将变为无效。

作为结论,您期望处理的列表类型只是简单的vanilla链表,其中节点从头部分配malloccalloc,并在丢弃时使用free释放。

© www.soinside.com 2019 - 2024. All rights reserved.