gpt4 book ai didi

c - 我在 C 中使用指针时遇到问题

转载 作者:行者123 更新时间:2023-12-02 08:13:43 26 4
gpt4 key购买 nike

有人可以向我解释这段代码是如何工作的吗?我试着把它写出来,然后全神贯注,但我还是迷路了。

当您设置 next->prev = prev 时,next->prevprev 之间的值有何不同?它们不是相同的值吗?下一行也有同样的问题。

我尝试编写一个 ListElement 结构来帮助理解,但我仍然感到困惑。任何答案或帮助将不胜感激,或任何其他可以让我理解的引用资料。我是一个视觉学习者,所以如果你碰巧知道这个很好的可视化,我将不胜感激。

int unlink(ListElement *element)
{
ListElement *next = element->next;
ListElement *prev = element->prev;

next->prev = prev;
prev->next = next;

return 0;
}

最佳答案

enter image description here

前两个赋值定义“连接”previous, 1 和next, 3, 节点。

ListElement *next = element->next;  // next connects current node to the one that follows 
ListElement *prev = element->prev; // prev connects current node to the one that precedes

这就是它们被称为 prevnext 的原因。其他两行是重新连接 prevnext 节点,以便它们跳过当前节点,即您正在通过上面定义的连接访问前面和后面节点的成员(具有相同的名称):

next->prev = prev; // now node: 3 is connected to node: 1 
prev->next = next; // now node: 1 is connected to node: 3

注意:请记住,每个节点都有两个指针,分别名为prevnext

关于c - 我在 C 中使用指针时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43855253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com