Я работаю над программой связанных списков и пытаюсь удалить последний элемент. Я попытался выполнить функцию ниже, но он неисправен и приводит к ошибке seg.Как удалить последний элемент в связанном списке?
У меня-структуру, как, например, в файле заголовка:
struct test{
char * name;
char * type;
struct test * next;
};
И у меня есть функция в отдельном файле .c, как таковой:
//NOTE Correct memory is allocated in other parts of the program
//(i.e not in this function)
//Also values are initialized in other functions...etc
test * removeLastItem(test * head)
{
test * parent, * cursor;
if(head == NULL) //if list is empty return NULL
{
return NULL;
}
else
{
while(cursor->next != NULL) //untill last item of the list is found..
{
parent = cursor; //parent equal to current element
cursor = cursor->next; //current element set to next pointer of current element
}
parent->next = NULL; //parent next pointer is now null
}
return head; //return the head of the list
}
Я m не совсем уверен, что моя верность здесь верна, но я должен вернуть голову списка, что, я считаю, я делаю. Любая помощь приветствуется.
Пожалуйста, инициализируйте курсор на что-то действительное перед использованием '->' оператора. 'cursor' используется неинициализированным. –