从表中的任意一个节点都能访问到表中的所有其他节点。 设置表中的最后一个节点的指针域指向表中的第一个节点,这种链表称为循环单链表。
单链表中某个结点p是表中的最后一个结点的特征是 p->next ==NULL;对于一个循环单链表,若首指针为head 表中某个结点的特征应该是 p->next == head。
typedef struct node{
datatype data;
struct node *next;
}node;
- 建立一个空的循环单链表
node *init(){ /*建立一个空的循环单链表*/
return NULL;
}
- 获得循环单链表的最后一个结点存储地址
node *rear(node *head){
node *p;
if(!head){
p == NULL;
}else{
p == head;
while(p->next! = head){
p = p->next;
}
}
return p;
}
- 输出循环单链表的各个结点的值
void display(node *head){
node *p;
if(!head){
printf("\n循环单链表是空的\n");
}else{
printf("\n循环单链表的各个结点的值为:\n");
printf("%5d",head->data); /*输出非空表中的第一