相关疑难解决方法(0)

使用指针从单链表中删除项目

在最近的Slashdot访谈中, Linus Torvalds给出了一个例子,说明一些人如何使用指针,表明他们并不真正理解如何正确使用它们.

不幸的是,由于我是他所谈论的人之一,我也不理解他的例子:

我见过太多人通过跟踪"prev"条目删除单链表项,然后删除条目,做类似的事情

if (prev)
    prev->next = entry->next;
else
    list_head = entry->next;
Run Code Online (Sandbox Code Playgroud)

每当我看到这样的代码时,我就会去"这个人不理解指针".而且很遗憾很常见.理解指针的人只使用"指向条目指针的指针",并使用list_head的地址初始化它.然后当他们遍历列表时,他们可以在不使用任何条件的情况下删除条目,只需执行即可

*pp = entry->next
Run Code Online (Sandbox Code Playgroud)

有人可以提供更多解释为什么这种方法更好,以及它如何在没有条件声明的情况下工作?

c pointers linked-list

52
推荐指数
4
解决办法
1万
查看次数

标签 统计

c ×1

linked-list ×1

pointers ×1