不要理解下面的while语句中的表达式。请有人解释
while(trans->link){
trans = trans->link;
}
答案 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
希望它有所帮助。