1、循环单链表的相关操作:
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
//初始化一个循环单链表
bool InitLinkList(LinkList &L)
{
L=(LinkList)malloc(sizeof(LNode));
if(L==NULL)
return false;
L->next=L;
return true;
}
//判断循环单链表是否为空
bool IsEmpty(LinkList L)
{
if(L->next==L)
return true;
else
return false;
}
//判断结点P是否为循环单链表的表尾结点
bool Istail(LinkList L,LNode *p)
{
if(p->next==L)
return true;
else
return false;
}
2、 循环双链表的相关操作:
typedef struct LNode{
ElemType data;
struct LNode *next,*piror;
}LNode,*LinkList;
//初始化一个循环双链表
bool InitLinkList(LinkList &L)
{
L=(LinkList)malloc(sizeof(LNode));
if(L==NULL)
return false;
L->next=L;
L->piror=L;
return true;
}
//判断循环双链表是否为空
bool IsEmpty(LinkList L)
{
if(L->next==L)
return true;
else
return false;
}
//判断结点P是否为循环双链表的表尾结点
bool Istail(LinkList L,LNode *p)
{
if(p->next==L)
return true;
else
return false;
}