循环链表一般带有头结点
1.循环单链表
循环单链表的操作与单链表基本相同。
1.初始化
bool InitList(LinkList &L){
L = (LNode *)malloc(sizeof(LNode));
if(L == NULL)
return false;
L -> next = L;
return true;
}
2.判空
bool Empty(LinkList L){
if(L -> next == L)
return true;
else return false;
}
3.判断结点p是否为表尾
bool isTail(LinkList L, LNode *p){
if(p -> next == L)
return true;
else
return true;
}
2.循环双链表
循环单链表的操作与单链表基本相同。
1.初始化
bool InitDLinkList(DLinkList &L){
L = (DNode *)malloc(sizeof(DNode));
if(L == NULL)
return false;
L -> next = L;
L -> prior = L;
return true;
}
2.判空
bool Empty(LinkList L){
if(L -> next == L && L -> prior == L)
return true;
else
return false;
}
3.判断结点p是否为表尾
bool isTail(LinkList L, LNode *p){
if(p -> next == L)
return true;
else
return true;
}