- 循环表
一、定义:最后一个结点的 next 域指向头结点处
二、结构:
typedef struct CNode
{
int data;
struct CNode *next;
}CNode,*CList;
三、基本操作
1>初始化单链表
void InitList(CList plist)
{
assert(plist!=NULL);
plist->next=plist;
}
2>得到一个结点
CNode *GetCNode(int val)
{
CNode *cnode=(CNode *)malloc(sizeof(CNode));
assert(cnode!=NULL);
cnode->next=NULL;
cnode->data=val;
return cnode;
}
3>头插法
bool Insert_head(CList plist,int val)
{
assert(plist!=NULL&&plist->next !=NULL);
CNode *cnode=GetCNode(val);
if(cnode!=NULL)
{
cnode->next=plist->next;
plist->next=cnode;
return true;
}
return false;
}
3>尾插法
bool Insert_tail(CList plist,int val)
{
assert(plist!=NULL&&plist->next !=NULL);
CNode *cur=plist;
while(cur->next!=plist)
{
cur=cur->next;
}
CNode *cnode=GetCNode(val);
if(cnode!=NULL)
{
cur->next=