C循环单链表代码实现,主函数调用
引入了一个表头结点,同时循环单链表有表长以及表尾指针属性。表头结点不存放值,只存放指向第一个元素的指针域;同时表尾指针的next指向表头结点;即从链表任意位置出发都可以遍历完所有链表元素;
#include <stdio.h>
#include <stdlib.h>
typedef int ListItem;
typedef ListItem *addr;
#define eq(A, B) (A == B)
typedef struct node *link;
typedef struct node
{
ListItem element;
link next;
} Node;
link NewNode()
{
return (link)malloc(sizeof(Node));
}
typedef struct clist *List;
typedef struct clist
{
int n;
link last;
} Clist;
List ListInit();
int ListEmpty(List L);
int ListLength(List L);
ListItem ListRetrieve(int k, List L);
int ListLocate(ListItem x, List L);
void ListInsert(int k, ListItem x, List L);
ListItem ListDelete(int k, List L)