我创建了一个函数来修改 C++ 链表中的节点,但它不起作用:
I have created function to modify a node in Linkedlist in C++ but its not working:
此函数是在链表中创建的,用于修改给定位置的节点。但是,这个函数不能正常工作,它给出了一些随机值。
void update_data(int old, int new_data) {//Function toupdate node
Node *curr=header;//Data members
int pos = 0;
while(curr->next!=NULL) {
if(curr->isbn == old)
{
curr->isbn = new_data;
cout<<old<<" Found at position "<<pos<<" Replaced with "<<new_data<<endl;;
}
curr = curr->next;
pos++;
}
}
对于初学者来说,函数中没有使用变量 pos
。
其次是while循环的条件
while(curr->next!=NULL) {
是不正确的,通常可以调用未定义的行为,因为指针 header
可以等于 nullptr
。此外,如果列表只包含一个指针头指向的节点,并且其数据成员 isbn
等于变量 old
的值,则它不会被更改。
该函数不应输出任何消息。
函数可以看成下面的样子
void update_data( int old, int new_data )
{//Function toupdate node
for ( Node *curr = header; curr != nullptr; curr = curr->next )
{
if ( curr->isbn == old )
{
curr->isbn = new_data;
}
}
}
此函数是在链表中创建的,用于修改给定位置的节点。但是,这个函数不能正常工作,它给出了一些随机值。
void update_data(int old, int new_data) {//Function toupdate node
Node *curr=header;//Data members
int pos = 0;
while(curr->next!=NULL) {
if(curr->isbn == old)
{
curr->isbn = new_data;
cout<<old<<" Found at position "<<pos<<" Replaced with "<<new_data<<endl;;
}
curr = curr->next;
pos++;
}
}
对于初学者来说,函数中没有使用变量 pos
。
其次是while循环的条件
while(curr->next!=NULL) {
是不正确的,通常可以调用未定义的行为,因为指针 header
可以等于 nullptr
。此外,如果列表只包含一个指针头指向的节点,并且其数据成员 isbn
等于变量 old
的值,则它不会被更改。
该函数不应输出任何消息。
函数可以看成下面的样子
void update_data( int old, int new_data )
{//Function toupdate node
for ( Node *curr = header; curr != nullptr; curr = curr->next )
{
if ( curr->isbn == old )
{
curr->isbn = new_data;
}
}
}