我创建了一个函数来修改 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;
        }
    }
}