6.双向链表

双向链表结构:

typedef structDualNode
{
    ElemType data;
    struct DualNode*prior;  //前驱结点
    struct DualNode*next;   //后继结点
} DualNode, *DuLinkList;
6.双向链表_第1张图片

既然单链表可以有循环链表,那么双向链表当然也可以有:

6.双向链表_第2张图片

双向链表的插入操作:


6.双向链表_第3张图片
  • s->next = p;
  • s->prior = p->prior;
  • p->prior->next = s;
  • p->prior = s;

双向链表的删除操作:


6.双向链表_第4张图片
  • p->prior->next = p->next;
  • p->next->prior = p->prior;
  • free(p);

你可能感兴趣的:(6.双向链表)