[英]C double linked list insert based on location
我正在研究雙鏈表的通用形式,所以我有:
列表結構:
int size;
struct elem *head;
struct elem *current;
struct elem *tail;
elem結構:
void *data;
struct elem *next;
struct elem *prev;
我很難實現一個允許我在當前元素之前推送新元素的函數。 這就是我現在想出來的:
t_list *my_list_add_before(t_list *list, void *data)
{
struct elem *elem = malloc(sizeof(*elem));
elem->data = data;
if(list->size == 0)
{
list->head = elem;
list->current = elem;
list->tail = elem;
elem->prev = NULL;
elem->next = NULL;
}
else
{
elem->next = list->current;
elem->prev = list->current->prev;
elem->prev->next = elem;
list->current->prev = elem;
}
list->size = list->size + 1;
return (list);
}
但我的list->head->next
似乎指向NULL
。 有什么問題?
您應該在 list->current->prev
之前修改list->current->prev->next
,目前您有效地執行elem->next = elem
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.