type value;
struct node *next;
Node *phead;
Node *ptail;
ok看完了结构图,我们来看循环链表主要的基本操作,同样的这里把带头结点的操作,不带头结点的的结构的操作都按照我个人的理解都给出。这里先给出单循环链表的代码以及示意图
ElemType data;
struct node *next;
LinkNode Phead;
LinkNode Ptail;
int length ;
LinkNode s=(Node *)malloc(sizeof(Node));
if(NULL==s)
{
return NULL;
}
s->data=https://www.yisu.com/zixun/x;
s->next=NULL;
return s;
if(NULL==s)
{
printf("Out of memory\n");
return FALSE;
}
return TRUE;
head->length=0;
head->Phead=NULL;
head->Ptail=NULL;
return TRUE;
LinkNode s=BuyNode(0);
if(NULL==s)
{
printf("内存不足,初始化失败\n");
return ERROR;
}
head->length=0;
head->Phead=head->Ptail=s;
s->next=head->Phead;
return TRUE;
具体实现代码如下:
LinkNode s=BuyNode(x); ,,,,,,,,,//构造新结点
如果(错误==IsEmpty (s))
{
返回FALSE;
}
如果(0==头→长度),,,,,,,,,//处理空链表的情况
{
头→Ptail=头→Phead=s;
}
s→下=头→Phead;,,,,,,
头→Phead=s;
头→Ptail→下=s;
头→长度+ +;
返回TRUE;
<人力资源/>
<人力资源/>
LinkNode s=BuyNode (x);
如果(错误==IsEmpty (s))
{
返回FALSE;
}
s→下=头→Phead→下;
头→Phead→下=s;,
如果(0==头→长度),,,,,,//处理空链表的情况
{
头→Ptail=s;
s→下=头→Phead;
}
头→长度+ +;
返回TRUE;
<人力资源/> <人力资源/>
<强> 强>
强>
<人力资源/><强> 强>
<人力资源/><强> 强>
<人力资源/>
<人力资源/>
具体实现代码如下:
<人力资源/>
LinkNode s=BuyNode (x);
如果(错误==IsEmpty (s))
{
返回FALSE;
}
如果(0==头→长度),,,,,null