I wanna remove the last item from my linkedlist, but become an Segmentation-fault. So some pointer is wrong. Here is my code.
#include <stdio.h>
#include <stdlib.h>
struct listenElement{
int wert;
struct listenElement *next;
};
static struct listenElement* anfang = NULL;
int removeElement(void) {
if (anfang == NULL){
return -1;
}
else{
int l = NULL;
struct listenElement *p = anfang->next ;
if (p->next == NULL){
l = p->wert;
free(p);
anfang->next = NULL;
}
else
{
while(p->next != NULL){
anfang = p;
p = p->next;
l = p->wert;
free(p);
}
anfang =p;
anfang->next= NULL;
}
return l;
}
}
whileloop is wrong, it freesp, but then you access it withp->nextoranfang=p; anfang->next=NULL;.