注意:这并不是特定于Java/C/C++的,但是链表就像它们一样常见,我选择在这些语言和双向链表下标记它。如果这是错误的,我可以改变它!
假设你有一个标准的双向链表实现:
struct List {
int Number;
struct List *blink;
struct List *flink;
};你有下面的列表:
1 <--> 2 <--> 3 <--> 4 <--> 5现在,在我的例子中,我一直使用flink作为某种终结器,并在一个方向上取消节点的链接:
1 <--> 2 <--> 3 <--| 4 <--> 5所以3的flink是null,但是4的blink指向3。
(稍微不相关,我一直在这样做,以允许快速修改和恢复链表,并具有以下内容:
1 <--> 2 <--| 3 <--> 4 <--> 5
<--> 6 <--| 7 <--> 8
<--> 9 <--> 10 <--> 11构建1 2 6 9 10 11列表)
我的问题实际上是“这种类型的操作是否有一个定义良好的名称?”我一直叫它“剪毛”,但如果有真名的话那就太好了。
发布于 2014-11-18 02:02:02
这是一种带有双向链表的混乱的东西。它基本上是以一种不正确的方式删除节点。
为什么我说这是不恰当的,考虑一下节点2和6,2的flink为空,6的blink指向2。
这说明2是最后一个节点,2在6的后面,这是矛盾的。
您在哪里需要这种方法?
发布于 2014-11-18 02:09:10
好吧,除非你同时保存指向节点3、4、5、7和8的指针,否则这将被称为“内存泄漏”。
也就是说,分配的内存你不再有办法访问,因此无法释放。
https://stackoverflow.com/questions/26978791
复制相似问题