C ++语法问题(链表)

时间:2016-07-31 03:03:50

标签: c++ linked-list

我正在查看一些回答问题的示例代码:从值为 val的整数链接列表中删除所有元素。

代码的第一行是if (!head) return NULL;(!head)是什么意思?我假设它意味着(head == NULL),但是这个标准适用于任何我想说(head == NULL)之类的东西吗?

while (h->next){
        if (h->next->val == val){
            h->next = h->next->next;

对于这部分代码,为什么不包含!= NULL部分是可以的? (例如(h->next != NULL))声明中是否隐含了该部分而无需明确说明?

1 个答案:

答案 0 :(得分:3)

首先,!是布尔否定操作。它(!head)基本上是head == 0head == false。 对于seond部分:

Zero为false,NULL(几乎)始终为零,因此while(h->next)基本等效while(h->next != NULL)