是否有一个名称可以删除双重链表边缘的一半?

时间:2014-11-17 17:53:38

标签: java c++ c doubly-linked-list

注意:这不是特定于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 nullblink,但4 1 <--> 2 <--| 3 <--> 4 <--> 5 <--> 6 <--| 7 <--> 8 <--> 9 <--> 10 <--> 11 指向3. {/ p>

(轻微无关,我一直在这样做,以便快速修改和恢复链接列表,并有类似的事情:

1 2 6 9 10 11

建立{{1}})

列表

我的问题实际上只是&#34;这种类型的操作是否具有明确的名称?&#34;我一直在说它&#34;剪切&#34;,但是如果有一个真正的名字很高兴知道。

2 个答案:

答案 0 :(得分:0)

双链表是一种混乱的东西。它基本上是以不正确的方式删除节点。

为什么我说它不合适,考虑节点2&amp; 6,2&#39; s flink为空,6&#39; blink指向2.

通过这个你告诉2是最后一个节点而2是在6的后面。这是矛盾的。

你在哪里需要这种方法?

答案 1 :(得分:0)

好吧,除非您还保存指向节点3,4,5,7和8的指针,否则这将被称为&#34;内存泄漏&#34;。

即。分配内存,你不再有办法访问,因此释放。