How do you add an element to the end of a linked list? I've tried to write code and it doesn't work. Everything gets displayed except for the element that I'm suppose to add.
#include<iostream.h>
using std :: cin;
using std :: cout;
using std :: endl;
#include<stddef.h>
struct node {
int value;
node* next;
};
node* make_a_list();
void print_list(node *list);
node* add_at_front(node* head, int addvalue);
void add_at_back(node *list, int addvalue);
int main(){
node* mylist;
// create the list and print it
mylist = make_a_list();
print_list(mylist);
add_at_back( mylist, 40);
print_list(mylist);
mylist = add_at_front( mylist, 1);
print_list(mylist);
return 0;
}
node* make_a_list()
// This function creates a linked list containing the even numbers
// from 2 to 20. The pointer of the list is returned to the
// calling function.
{
node *head = NULL, *tptr;
int num = 20;
while(num){
tptr = new node;
tptr->value = num;
tptr->next = head;
head = tptr;
num -= 2;
}
return head;
}
void print_list(node *list)
// This function accepts as input a pointer to the list
// and prints out all of the elements of the list.
// Each element is separated by a few spaces and
// the last element of the list is terminated by
// a newline.
{
node *ptr = list;
// loop through entire list
while(ptr != NULL) {
// print each element
cout <<" " << ptr->value;
ptr = ptr->next;
}
cout << endl;
return;
}
node* add_at_front(node* head, int addvalue)
// This function accepts as input a pointer to the list
// and an integer (addvalue). This integer is added
// to the front of the list. The pointer to the start
// of the list is then returned.
{
node *newptr;
// create a new node
newptr = new node;
newptr->value = addvalue;
newptr->next = head;
// return pointer that points to front of list
head = newptr;
return head;
}
void add_at_back(node *list, int addvalue)
// This function accepts as input a pointer to the list
// and an integer (addvalue). This integer is added
// to the end of the list.
{
node *newptr, *tempptr=list;
// loop until you reach last node in list
while(tempptr != NULL) {
tempptr->value;
tempptr = tempptr->next;
// create a new node with appropriate values
// and add it to the list
newptr = new node;
newptr->next = list;
newptr->value = addvalue;
list = newptr;
}
return;
}