首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一个名称来删除一半的双向链表边缘?

是否有一个名称来删除一半的双向链表边缘?
EN

Stack Overflow用户
提问于 2014-11-18 01:53:38
回答 2查看 88关注 0票数 1

注意:这并不是特定于Java/C/C++的,但是链表就像它们一样常见,我选择在这些语言和双向链表下标记它。如果这是错误的,我可以改变它!

假设你有一个标准的双向链表实现:

代码语言:javascript
复制
struct List {
    int Number;
    struct List *blink;
    struct List *flink;
};

你有下面的列表:

代码语言:javascript
复制
1 <--> 2 <--> 3 <--> 4 <--> 5

现在,在我的例子中,我一直使用flink作为某种终结器,并在一个方向上取消节点的链接:

代码语言:javascript
复制
1 <--> 2 <--> 3 <--| 4 <--> 5

所以3的flinknull,但是4的blink指向3。

(稍微不相关,我一直在这样做,以允许快速修改和恢复链表,并具有以下内容:

代码语言:javascript
复制
1 <--> 2 <--| 3 <--> 4 <--> 5
         <--> 6 <--| 7 <--> 8
                <--> 9 <--> 10 <--> 11

构建1 2 6 9 10 11列表)

我的问题实际上是“这种类型的操作是否有一个定义良好的名称?”我一直叫它“剪毛”,但如果有真名的话那就太好了。

EN

回答 2

Stack Overflow用户

发布于 2014-11-18 02:02:02

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

为什么我说这是不恰当的,考虑一下节点2和6,2的flink为空,6的blink指向2。

这说明2是最后一个节点,2在6的后面,这是矛盾的。

您在哪里需要这种方法?

票数 0
EN

Stack Overflow用户

发布于 2014-11-18 02:09:10

好吧,除非你同时保存指向节点3、4、5、7和8的指针,否则这将被称为“内存泄漏”。

也就是说,分配的内存你不再有办法访问,因此无法释放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26978791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档