typedefstruct DNode{
ElemType data;struct DNode *prior,*next;}DNode,*DLinklist;//初始化空的循环双链表
bool InitDLinkList(DLinklist &L){
L =(DNode *)malloc(sizeof(DNode));//分配一个头结点if(L==NULL)//内存不足,分配失败return false;
L -> prior = L;//头结点的prior指向头结点
L -> next = L;//头结点的next指向头节点return true;}voidtestDLinklist(){//初始化循环双链表
DLinklist L;InitDLinkList(L);///..后续代码..}
判断循环双链表是否为空
bool Empty(DLInklist L){if(L -> next == L)//👈是否指向链表自身return true;elsereturn false;}
2. 双链表的插入
//在p结点之后插入s结点
bool InsertNextDNode(DNode *p, DNode *s){
s -> next = p -> next;//将结点*s插入到结点*pzhiho
p -> next -> prior = s;//👈,在双链表中出现错误;但是在循环双链表中不会出现错误
s -> prior = p;
p -> next = s;}
3. 双链表的删除
//删除p的后继结点q
p -> next = q -> next;
q -> next -> prior = p;//👈,在双链表中出现错误;但是在循环双链表中不会出现错误free(q);