Delete first element of a linked list
Hey everyone,
so I started learning C and tried to program a linked list by myself without looking anything up because I think that I will learn a lot more this way, so the code might not be optimal. But I ran into an error I didn't quite understand.
Here is my function to delete elements/nodes from the list:
Code:
void deleteElement(struct list *myList, int myData){
struct list *currentElement = myList;
if(myList->data == myData) {
*myList = *myList->next;
free(currentElement);
return;
}
while(currentElement->next != NULL){
if(currentElement->next->data == myData){
struct list *deleteElement = currentElement->next;
currentElement->next = currentElement->next->next;
free(deleteElement);
} else {
currentElement = currentElement->next;
}
}
}
And it works fine this way, but only with a bit of trial and error, because at first I wanted to delete the first element of my list this way:
Code:
if(myList->data == myData) {
myList = myList->next;
free(currentElement);
return;
}
Now to my question.
Why do I need to write my code like this:
Code:
*myList = *myList->next;
Instead of this:
Code:
myList = myList->next;
It seems that I didn't fully understand pointers yet. Maybe you're able to help.
Thank you in advance!