簡體   English   中英

基於位置的C雙鏈表插入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM