我正试图在链表的开头添加并打印一个新节点。但是我的代码在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)
)传递该指针,或者从函数中返回新的节点指针,并手动为其分配外部指针。