C語言---經典之雙向連結串列的實現
阿新 • • 發佈:2019-02-08
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;
}
{
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;
}