双向链表

双向链表是在单链表的每个结点中,在设置一个指向其前驱结点的指针域,所以双向链表中的结点有两个指针域,一个指向直接后继,另一个至下关直接前驱。

双向链表的存储结构

//双向链表的存储结构

typedef struct DulNode

{

ElemType data;

struct DulNode *prior;

struct DulNode *next;

}DulNode, *DuLinkList;

双向链表是单链表中扩展出来的结构,所以他的很多操作时和单链表相同的,(ListLength,GetElem,LocateElem)这些操作只涉及一个方向指针就可以

双向链表插入,删除时,需要更改两个指针变量

插入操作

顺序保持一致:

1、s->prior = p;

2、s->next = p->next;

3、p->nex->prior= s;

4、p->next = s;


删除操作

p->prior->next= p->next;

p->next->prior = p->prior;


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