线性表
双链表
相比于单链表只有一个后继指针,只能顺序访问后继节点,双链表可以从当前节点访问前驱节点
双链表包括prior和next两个指针,分别指向前驱和后继
双链表结构
双链表中节点类型的描述如下:
typedef struct DNode{ //定义双链表节点类型
ElemType data; //数据域
struct DNode *prior,*next; //前驱和后继指针
}DNode,*DLinklist;
双链表插入操作:
1. s -> next = p -> next;
2. p -> next ->prior = s;
3. s -> prior = p;
4. p -> next = s;
双链表删除操作:
p -> next = q -> next;
q -> next -> prior = p;
free(q);