在主要功能中,我使用一个功能创建了一个头部并向前推动,它可以按预期工作。
但是,使用此功能在已创建的节点的末尾添加信息后,就不会了。
回推数据不会附加到链接列表中。
下面是我的代码;
// function pushback using tail
void push_back_t(Node *tail, int data) {
Node *Sn = (Node*)malloc(sizeof(Node)); //creation of the new node called Sn
if (Sn == NULL) {
printf("Erreur");
exit(3);
}
Sn->data = data; //to add the data to the new node
Sn->Next = NULL;
tail->Next = Sn; //make the last Node that tail already point points on the new node
tail = Sn; //make tail to the last and new node
}
我在做什么错,我该如何解决?
答案 0 :(得分:0)
您必须在调用代码中更新tail
。或者,您可以将指针传递到tail
指针:
// function pushback using tail
void push_back_t(Node **tail, int data) {
Node *Sn = (Node *)malloc(sizeof(Node)); //creation of the new node called Sn
if (Sn == NULL) {
printf("Erreur");
exit(3);
}
Sn->data = data; //to add the data to the new node
Sn->Next = NULL;
if (*tail) {
(*tail)->Next = Sn; //make the last Node that tail already point points on the new node
}
*tail = Sn; //make tail point to the new last node
}
答案 1 :(得分:0)
之所以会发生这种情况,是因为尾部是通过值传递的,因此您正在函数中更改它的副本,而不是原始的。
您必须更改函数以使其使用指向Node i的指针。 e。节点** tail,并在函数内取消引用。
void push_back_t(Node **tail, int data) {
...
if(*tail) {
(*tail)->Next = Sn;
}
*tail = Sn;
}