C++ 如何创建将最后一个节点的值更改为1000的函数?

C++ 如何创建将最后一个节点的值更改为1000的函数?,c++,linked-list,C++,Linked List,我试图为它创建一个代码。然而,它没有起作用。以下是我以前尝试的代码: void modifyLastNode(node*) { curr = head; while (Curr != NULL && curr->data != 99) { temp = new node; temp->data = 1000; temp->next = curr; } } 除了语法错误(即,curr、head、curr和temp未定义)妨碍代

我试图为它创建一个代码。然而,它没有起作用。以下是我以前尝试的代码:

void modifyLastNode(node*) {
  curr = head;
  while (Curr != NULL && curr->data != 99) {
    temp = new node;
    temp->data = 1000;
    temp->next = curr;
  }
}
除了语法错误(即,
curr
head
curr
temp
未定义)妨碍代码正确编译之外,代码还包含几个逻辑错误:

  • 您正在忽略输入参数

  • 循环时,您不会更改
    curr
    指向的内容,因此您会反复检查同一
    节点的
    数据
    字段,从而导致无休止的循环

  • 在每个循环迭代中分配(并泄漏)一个新的
    节点
    。搜索不应创建新的
    节点
    s

  • 检查
    数据
    字段是检测列表中最后一个节点的错误方法。最后一个节点的
    next
    字段设置为NULL,这就是您应该查找的内容。想象一下在同一个列表上调用两次
    modifyLastNode()
    。第一次调用将查找
    99
    (在您的示例中,它是列表中最后一个
    节点,但在生产系统中可能不是),将其更改为
    1000
    ,然后第二次调用将无法再找到
    99

您需要更像这样的东西:

void modifyLastNode(节点*头){
若有(总目){
节点*curr=头部;
while(当前->下一步!=NULL){
当前=当前->下一步;
}
当前->数据=1000;
}
}

这段代码甚至可以编译吗?什么是当前节点?
temp=新节点在你的循环中为什么?还有为什么
temp
curr
不是局部变量?为什么这个函数需要一个
node*
参数?@cigien,因为这是赋值的一部分。我想更好的问题是为什么忽略了参数?