双向链表
双向链表结点结构
typedef struct DualNode
{
ElemType data;
struct DualNode *prior;
struct DualNode *next;
}DualNode,*DuLinkList;
![在这里插入图片描述](https://img-blog.csdnimg.cn/c3f774d3902047c786cbfc8ce93d96d9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NDQxODAwNg==,size_16,color_FFFFFF,t_70#pic_center)
双向链表也有循环链表
![在这里插入图片描述](https://img-blog.csdnimg.cn/46800fa04b9848e19320f571deec21a7.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NDQxODAwNg==,size_16,color_FFFFFF,t_70)
双向链表的插入操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/a00efdb8b0b54e1d92658748e707e530.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NDQxODAwNg==,size_16,color_FFFFFF,t_70)
代码实现:
s->next=p;
s->prior=p->prior;
p->prior->next=s;
p->prior=s;
双向链表的删除操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/6a703a903e21443ca133325f688ec40b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NDQxODAwNg==,size_16,color_FFFFFF,t_70)
代码实现:
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);