括号内的陈述意味着什么

时间:2014-12-14 00:59:14

标签: c++

不要理解下面的while语句中的表达式。请有人解释

while(trans->link){
    trans = trans->link;
}

3 个答案:

答案 0 :(得分:1)

这是一个简单的链表遍历,用于查找列表的最后一个元素。也就是说,虽然trans->link非零(即,不是NULL - 超过列表末尾),但它会在列表中向下移动一步:trans = trans->link

答案 1 :(得分:0)

->是指针的类成员访问器。据推测,trans是一个指针,trans->link是一个相同类型的指针。上面的代码显示"虽然trans->link不为零,但将trans指定为trans->link,最终移至链接列表的末尾。

答案 2 :(得分:0)

假设你有一个结构:

struct Element 
{
    int value;
    Element *next;
};

链接列表由类型为Element的节点组成,并且它具有指向链表头(第一个节点)的指针。列表最后一个元素的next指针指向nullptr(如果不熟悉链接列表More Info)。

如果你想遍历整个列表,你需要有Element *temp指针指向head(因为我们不想失去我们的列表头部)。然后,在访问一个节点后,我们必须将temp移动到我们当前指向的节点的下一个元素(temp=temp->next)。

我们将停止遍历,直到temp到达nullptr。那就是while循环会中断。

在你的情况下

link=next

trans=temp

希望它有所帮助。