使用for循环创建链表的小错误



我正在尝试使用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,直到它将是一个真正的节点插入到列表的末尾。

相关内容

  • 没有找到相关文章

最新更新