上一个说的是单链表,其实循环链表跟单链表类似,单链表最后一个节点(p)的next域为NULL即p->next=NULL而循环链表(plist)的则为头结点的地址,即p->next=plist。其余的基本操作和单链表几乎一样,仅仅是单链表循环结束条件为!=NULL,而循环链表是!=plist。
基本操作为:初始化,插入(头插、尾插),查找,删除,判空,求长,摧毁,逆置。
.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "clist.h"
void InitList(CList plist)
{
assert(plist != NULL);
if(plist == NULL)
{
return ;
}
plist->next = plist;//循环链表
}
//头插
bool Insert_Head(CList plist,int val)
{
CNode *p = (CNode *)malloc(sizeof(CNode));
assert(p !