设有尾指针的单循环链表的12个基本操作
void InitList(LinkList &L){
L = (LinkList)malloc(sizeof(LNode));//产生头结点,并使L指向此头结点
if (!L)exit(OVERFLOW);
L->next = L;//头结点的指针域指向头结点
}
void ClearList(LinkList &L){
LinkList p, q;
L = L->next;//L指向头结点
p = L->next;//p指向第一个结点
while (p != L){
//未到表尾
q = p->next;//q指向p的后继结点
free(p);//释放p所指结点
p = q;//p指向q所指结点
}
L->next = L;//头结点指针域指向自身(头结点)
}
void DestroyList(LinkList &L){
ClearList(L);
free(L);
L = NULL;
}
Status ListEmpty(LinkList L){
if (L->next == L)return TRUE;
else return FALSE;
}
int ListLength(LinkList L){
LinkList p = L->next;//p指向头结点
int i = 0;
while (p != L)//未到表尾