链表之循环链表(C语言版)





type value;

struct node *next;


Node *phead;

Node *ptail;



链表之循环链表(C语言版)





链表之循环链表(C语言版)

链表之循环链表(C语言版)

链表之循环链表(C语言版)




    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;







链表之循环链表(C语言版)




链表之循环链表(C语言版)


具体实现代码如下:


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;

<人力资源/> <人力资源/>

<强>

<人力资源/>

<强>

<人力资源/>

<强>


链表之循环链表(C语言版)


<人力资源/>


链表之循环链表(C语言版)

<人力资源/>

具体实现代码如下:

<人力资源/>

LinkNode s=BuyNode (x);

如果(错误==IsEmpty (s))

{

返回FALSE;

}


如果(0==头→长度),,,,,null

链表之循环链表(C语言版)