我正在尝试使用for循环创建单个链表。我最终创建了一个值为0的额外节点。
下面是我的代码:node *insert(node *curPtr) {
node *temp = new node() // create a temp node
curPtr = temp;
for ( int i=1; i < 3; i++ ) {
temp->data = i;
temp->next = new node();
temp = temp->next;
}
return curPtr;
}
void printList(node *curPtr) {
while(curPtr) {
std::cout<<curPtr->data<<std::endl;
curPtr = curPtr->next;
}
}
得到以下输出:
120
而我期待
12
我需要在我的代码中改变什么?
谢谢
这里的问题是您总是使
temp->next = new node();
因此,在printList
函数的while循环中,有一个额外的迭代显示一个尚未分配的节点,并且-猜测这是由于编译器的假设或因为您正在初始化node的值。node
的构造函数中的数据-您将获得该节点的值等于0。快速解决方案是更改打印功能如下:
void printList(node *curPtr) {
while (curPtr->next) {
std::cout << curPtr->data << std::endl;
curPtr = curPtr->next;
}
}
我宁愿让curPtr->next = null
,直到它将是一个真正的节点插入到列表的末尾。