I am trying to print my linked list until the next node is NULL but I am seg faulting after printing two nodes. mov is my linked list nodes.
while(mov->next != NULL)
{
printf("%s\n", mov->movie_title);
printf("%s\n", mov->...etc...)
free(mov);
mov = mov->next;
}
This is my push function that I use to assign the data to the nodes.
void push(movie** mov)
{
movie* new = malloc(sizeof(movie));
new->next = (*mov);
(*mov) = new;
}
After assigning the data to the node, I call push(&mov);
I was using an array of structs before but since the amount of memory needed to store became very large, I thought it wouldn't work very well since malloc allocates a contiguous block of memory where as with nodes, I can allocate small chunks of memory for each node.
The problem here is in the free(mov) line and what comes after.
You're freein' mov then trying to assign mov->next to it, you see where the problem is, no ?
mov->next can't be accessed anymore since you free'd the struct which was storing it
A better way to print an entire linked list is to set a "temporary" variable which will browse each node of the list and print every values while doing it.
Here's an example :
void printMovieList(movie** mov) {
movie* temp = *mov;
while(temp != NULL)
{
printf("%s\n", temp->movie_title);
printf("%s\n", temp->...etc...);
temp = temp->next;
}
}