循环单向链表

来源:互联网 发布:程序员的呐喊下载 编辑:程序博客网 时间:2024/05/17 05:18
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;}