Я пытаюсь написать двойной связанный список на C.
Это моя реализация:
typedef struct
{
void* value;
struct Dlist* prev;
struct Dlist* next;
} Dlist;
Dlist* createDlist()
{
Dlist* newList = (Dlist*)malloc (sizeof(Dlist));
newList->value = NULL;
newList->next = NULL;
newList->prev = NULL;
return newList;
}
/*
* Get last element from Dlist
*/
Dlist* getLast(Dlist* list)
{
if (list)
{
while(list->next)
list = (Dlist*)list->next;
}
return list;
}
/*
* add element to list at start
*/
Dlist* addItemAtStart(Dlist* list, Pair* value)
{
Dlist* newList = NULL;
Dlist* last = NULL;
newList = createDlist ();
newList->value = value;
if (list)
{
last = getLast(list);
last->next = newList;
newList->prev = last;
return list;
}
else
return newList;
}
Теперь, когда я пытаюсь добавить элемент в свой список, мне нужно каждый раз назначать новое значение:
list = addItemAtStart(list, "Hello");
Но я хочу только
addItemAtStart(list, "Hello");
Без list =
Как сделать так, чтобы список изменялся без присваивания?
стр. С. Я получаю segfaut с Dlist* addItemAtStart(Dlist **list, void* value)
пытаюсь вставить так:
Dlist **list = NULL;
addItemAtStart(&list, "Hello");
Спасибо.