Devos - 1 year ago 107

C++ Question

Can't seem to pin down what I'm missing here. I know how to properly insert a new node at the beginning of my linked list:

`void InsertBeginning(int val) {`

Node *n = new Node();

n->data = val;

n->next = A;

A = n;

DisplayList(); //prints list

}

And now I wish to do the same thing but at the end of my list, so then I made this:

`void AddNode(int val) {`

Node *n = new Node();

n->data = val;

n->next = A;

//finds last empty node

while (n->next != NULL) {

n = n->next;

}

A = n;

DisplayList();

}

But all this does is delete everything but my first node.

Answer Source

Walk down the list and then add the new node. Note that there is no need to modify `A`

, which presumably points to the head of the list, because it doesn't change.

```
void AddNode(int val) {
Node *n = new Node();
n->data = val;
n->next = NULL;
Node *pnt = A;
// If list is empty, new node becomes first node
if (!pnt) {
A = n;
return;
}
//finds last empty node
while (pnt->next != NULL) {
pnt = pnt->next;
}
pnt->next = n;
DisplayList();
}
```