【发布时间】:2021-08-06 01:14:48
【问题描述】:
我目前正在用 C++ 创建一个单链表
现在我正在尝试创建一个函数showList 来打印列表的内容,如果它为空,则打印“空列表”。但是,现在它每次都会打印列表和“空列表”。当列表为空时,它会打印一个空行并在新行“空列表”中打印
这是我当前的代码:
template <typename T>
struct Node {
T data;
Node* next;
};
template <typename T>
void showList(const Node<T>* head){
while (head != nullptr){
std::cout << head->data << " " ;
head = head->next;
}
std::cout << std::endl;
if(head->data = 0){
std::cout << "Empty list"<< std::endl;
}
}
【问题讨论】:
-
小测验:当
while循环结束时:1)head的值是多少,2)给定#1,head->data的值是多少? -
@SamVarshavchik head 的值会一样吗?我认为它不会改变任何东西。 head->data 为 nullptr
-
“相同”是什么意思?您认为
head必须是什么值才能使while循环终止?而且,鉴于head是那个值,你认为head->data意味着什么?而且既然data不是指针,你怎么期望它变成nullptr? -
@SamVarshavchik 它必须是 nullptr。现在我意识到头部而不是数据必须是nullptr。这没有意义。我刚刚尝试了所有发现的方法,这是建议的解决方案之一,但没有奏效。
-
if(head->data = 0)应该对大多数编译器发出警告。您真的打算将零分配给data字段吗?
标签: c++ list linked-list