typedef struct LIST
{
struct LIST *Next;
}LIST;
/*
* 初始化一个循环单向链表
*/
void list_init(LIST *head)
{
head->Next = head;
}
/*
* 判断链表是否为空
*/
int is_list_empty(LIST *head)
{
return (head->Next == head);
}
/*
* 往循环单向链表中插入一个元素
* prev : 在prev元素后面插入
*/
void list_insert(LIST *prev, LIST *element)
{
element->Next = prev->Next;
prev->Next = element;
}
/*
* 在循环单向链表中删除一个元素
* head : 循环单向链表的第一个元素
*/
void list_delete(LIST *head, LIST *element)
{
LIST *pNext = head;
while(pNext->Next != element)
{
pNext = pNext->Next;
}
pNext->Next = element->Next;
}
/*
* 统计循环单向链表的长度
*/
int list_length(LIST *head)
{
int i=1;
LIST * pNext = head;
while(pNext->Next != head)
{
pNext = pNext->Next;
i++;
}
return i;
}