1. 程式人生 > >C語言---經典之雙向連結串列的實現

C語言---經典之雙向連結串列的實現

int dlist_ins_next(Dlist *list, DListElement *element, const void *data)
{
    DListElement *new_element;
    if (element == NULL && list->size != 0)
        return -1;
    if ((new_element = (DListElement *)malloc(sizeof(DListElement))) == NULL)
        return -1;
    new_element->data = (void *)data;
    if (list->size == 0)//插入的為頭節點
    {
        list->head = new_element;
        list->tail = new_element;
        new_element->prev = NULL;
        new_element->next = NULL;
    }
    else
    {
        if (element->next == NULL)//插入的為尾節點
        {


            new_element->next = NULL;
            list->tail = new_element;
        }
        else
        {
            new_element->next = element->next;
            element->next->prev = new_element;


        }
        element->next = new_element;
        new_element->prev = element;
    }
    list->size++;
    return;
}