结构1
2
3
4
5typedef struct DualNode{
ElemType data;
struct DualNode *prior;//前驱结点
struct DualNode *next;//后继结点
}DualNode,*DuLinkList;
双向链表插入
s->next = p;
s->prior = p->prior;
p->prior->next = s;
p->prior = s;
双向链表删除
p->prior->next = p->next;
p->next ->prior = p->prior;
free(p)
小结
双向链表相对于单链表来说复杂一点,每个结点对了一个prior指针,在进行插入和删除时需要注意;
双向链表可以有效提高算法的时间性能,用空间换取时间