【发布时间】:2017-05-13 06:47:33
【问题描述】:
给定链表的头部,遍历链表计算链表的大小时,常见的做法可能是
ListNode* curr = head;
int count = 0;
while(curr) {
curr = curr->next;
count++;
}
但我也看到人们这样做:
ListNode* curr = head;
int count = 0;
while(curr = curr->next) {
count++;
}
我记得在解析字符串时,我们经常这样做
stringstream content(intputStr);
string outputStr;
while(content >> outputStr) {
...
}
我想知道我是否可以始终以执行一行代码为条件(例如,在本主题中,条件为 curr = curr->next)?如果没有,边缘情况是什么?这是一个好的做法吗?
谢谢
【问题讨论】:
-
if请教什么? -
什么
if?您的帖子不包含任何内容。 -
您“也看到人们做的”与您最初看到的不同。这两个循环不相同。
-
b = c表达式本身的值为c,因此您可以执行a = b = c之类的操作,将c的值分配给a和b。这也是使if/while (cur = cur->next) { ... }成为可能的原因。 -
你的第二个代码 sn-p 都是错误的(计数减一),如果在空列表上调用会崩溃...
标签: c++