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节点
- 检查
字段是检测列表中最后一个节点的错误方法。最后一个节点的数据
字段设置为NULL,这就是您应该查找的内容。想象一下在同一个列表上调用两次next
。第一次调用将查找modifyLastNode()
(在您的示例中,它是列表中最后一个99
节点,但在生产系统中可能不是),将其更改为
,然后第二次调用将无法再找到1000
99
void modifyLastNode(节点*头){
若有(总目){
节点*curr=头部;
while(当前->下一步!=NULL){
当前=当前->下一步;
}
当前->数据=1000;
}
}
这段代码甚至可以编译吗?什么是当前节点?temp=新节点代码>在你的循环中为什么?还有为什么temp
和curr
不是局部变量?为什么这个函数需要一个node*
参数?@cigien,因为这是赋值的一部分。我想更好的问题是为什么忽略了参数?