我正在尝试使用for循环创建单个链表。我最终创建了一个零值的额外节点。
以下是我的代码:
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;
}
}
我得到以下输出:
1 2 0
而我期待
1 2
我的代码需要更改什么?
由于
答案 0 :(得分:0)
这里的问题是你一直在制作
temp->next = new node();
因此,在printList
函数的while循环中,有一个额外的迭代显示尚未分配的节点,并且由于编译器假设或者因为您正在初始化节点的值而认为这是因为。 node
的构造函数中的数据 - 此节点的值等于0。 快速解决方案是更改打印功能,如下所示:
void printList(node *curPtr) {
while (curPtr->next) {
std::cout << curPtr->data << std::endl;
curPtr = curPtr->next;
}
}
我希望制作curPtr->next = null
,直到它将成为在列表末尾插入的真实节点。