将*下一个列表指针设置为NULL

时间:2012-01-04 02:27:59

标签: c list pointers

我有一个包含几个节点的列表。我试图通过将current->next值声明为NULL来标记最终节点。

所以,让我们说我的current指向最后一个节点。以下两个代码段是否以不同的方式工作,如果是,如何?

 current->next = NULL;

 current = current->next;
 current = NULL;

我现在已经尝试了一段时间,但我无法真正理解那里发生了什么。我会说他们正在做同样的事情,因为第二个人首先将我的current指向next点,然后将其设置为NULL

编辑:哦,我理解答案的内容,现在看来我也很明显:)。所以,如果我不使用第一种方式,但选择去current = current->next是否有办法让我把NULL值放在我应该的位置?如何使用我的新current指出我的旧next指向的位置?

2 个答案:

答案 0 :(得分:2)

是的,这些是不同的,它是您想要的第一个版本。

在第二个中,您只需要更改局部变量current的值(到NULL),而最终节点的next指针保持不变(它可能应该首先初始化为NULL,但也许这就是你正在做的事情。

答案 1 :(得分:2)

前一个代码段将next指向的结构的current字段分配给NULL。第二个代码段将current指针指向next指向的结构的current字段,然后将current设置为NULL

除非你有其他方法来获取对结构的引用,否则我并不真正理解第二种方法的用处,因为你实际上是通过丢失指向它的指针而将自己从结构中删除。

所以在前一种情况下:

current -> struct
           next -> NULL

在后一种情况下:

current -> NULL

           struct
           next -> ????