一、循环单链表
只需将单链表的最后一个结点的指针域指向头结点。
初始化操作如下:
typedef struct LNode {
int data;
struct LNode *next;
}*LinkList;
LinkList initCLinkList(LinkList &L) {
L = (LNode*)malloc(sizeof(LNode));
if (L == NULL)
return NULL;
L->next = L;
return L;
}
二、循环双链表
在双链表的基础上,让头结点的prior指针指向表尾结点,让表尾结点的next指针指向头结点。
初始化操作如下:
typedef struct DNode {
int data;
struct DLinkList *prior, *next;
}*DLinkList;
DLinkList initCDLinkList(DLinkList &L) {
L = (DNode *)malloc(sizeof(DNode));
if (L == NULL)
return NULL;
L->prior = L;
L->next = L;
return L;
}