1、双链表
双链表就是在单链表结点上增添了一个指针域,指向当前结点的前驱。
2、双链表结点定义
typedef struct DoubleLinkedLists
{
int data;
struct DoubleLinkedLists *prior;
struct DoubleLinkedLists *next;
}DoubleLinkedLists;
3、插入结点的算法
假设在双链表中p所指的结点之后插入一个结点s,操作如下:
(1)s->next=p->next;
(2)s->prior=p;
(3)p->next=s;
(4)s->next->prior=s;
4、删除结点的算法
假设要删除双链表中p结点的后继结点,操作如下:
(1)q=p->next;
(2)p->next=q->next;
(3)q->next->prior=p;
(4)free(q);