循坏链表仅在初始化上与普通链表不同,插入删除操作都相同
循坏单链表
结构体
typedef struct LNode
{
Elemtype data;
struct LNode *next;
}LNode, *LinkList;
初始化
bool InitList(LinkList &L)
{
L = (LinkList)malloc(sizeof(LNode));
if(L == NULL)
return false;
L->next = L; //头结点next指针初始指向自己
return true;
}
判空
bool Empty(LinkList &L)
{
if(L->next == L)
return true;
return false;
}
判断表尾结点
bool isTail(LinkList L, LNode *p)
{
if(p->next == L)
return true;
return false;
}
循坏双链表
判空和判断队尾与上述一致
结构体
typedef struct DNode
{
Elemtype data;
struct DNode *prior, *next;
}DNode, *DLinkList;
初始化
bool InitDLinkList(DLinkList &L)
{
L = (DLinkList)malloc(sizeof(DNode));
if(L == NULL)
return false;
L->next = L;
L->prior = L;
return true;
}