在链表形成中,在开头添加变量的代码是什么



我正试图在链表的开头添加并打印一个新节点。但是我的代码在C++中打印时没有显示添加的数据。

struct node{
    int data;
    node *next;
};
void add_begin(node *S, int k)
{
    node *T;
    T=new (node);
    T->data=k;
    T->next=S;
    S=T;
}
void print(node *S)
{
    cout<<"Elements of the node :n";
    while (S->next!=NULL)
    {
        cout<<S->data<<endl;
        S=S->next;
    }
    cout<<S->data<<endl;
}

我假设您将调用此函数,传入作为列表头的node和作为新数据的int,并期望您传入的节点更新到新节点。

不幸的是,事实并非如此。在函数add_begin中,它有自己的指向列表中第一个节点的指针,因此当您使用S=T更新它时,函数中只有指针会更新,而不是您传入的指针。

如果要更新传入的指针,则应通过引用(void add_begin(node *&S, int k))传递该指针,或者从函数中返回新的节点指针,并手动为其分配外部指针。

相关内容

  • 没有找到相关文章

最新更新