【发布时间】:2020-08-15 07:22:14
【问题描述】:
在我的考试中,有一个这样的问题,我一直在想,在 C 中分别销毁双链表和单链表的销毁算法编码有什么区别?
【问题讨论】:
-
我会四处走动,说我认为没有必要有任何区别。适用于单链表(从头到尾迭代)的算法同样适用于双链表。我想您可以从任何节点开始销毁双向链表,但这是糟糕的设计。
-
双链表是循环的(尾部指向头部)吗?如果是这样(通常是这样),您可能必须在循环中实现不同的条件。
-
@Beta - 通常情况下,双向链表的“头部”将与不同的数据结构或内存模型相关联......此外,如果你要迭代直到你点击@ 987654321@,现在你可能需要迭代直到你(重新)点击
head。 -
@Myst:同样的警告也适用于循环单独链表。
-
@Beta - 在一个单链表中,
head != tail(尾部通常是NULL)...而在一个双链表中链表head == tail,除非您对其进行测试,否则这可能会导致双重free。
标签: c linked-list singly-linked-list doubly-linked-list