Professional Documents
Culture Documents
04 Double Linked List
04 Double Linked List
p = getDNode(d);
if(list==NULL)
list = p;
else{
list->prev = p;
p->next = list;
list = p;
}
Insert a node after a given node
p->prev = list;
p->next = list->next;
list->next->prev = p;
list->next = p;
Add a node at the end
p = getDNode(d);
if(list == NULL){
return p;
}
for(q=list; q->next!=NULL; q=q->next);
q->next= p;
p->prev = q;
Delete A Node
if(list->data==k){
Case 1: Delete First Node: p = list;
(1) List has only one node if(list->next==NULL){
(2) List has more than one node list = NULL;
} else{
list->next->prev=NULL;
list = list->next;
}
free(p);
return list;
}
Delete A Node q = list;
while(q->next != NULL){
if(q->next->data == k)
Case 2: Delete after first Node: break;
(1) Except last node q = q->next;
(2) Last Node }
p = q->next;
q->next = q->next->next;
if(q->next!=NULL)
q->next->prev = q;
free(p);