一
循环链表是另一种形式的链式存储结构,他的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环,由此从表中任一结点出发均可找到表中其他结点,其操作与单链表基本一致,差别在于循环条件不是p或p->next是否为空,而是否等于头指针。
二
循环链表的结点定义,与单链表一样,在生成循环链表是应该,将r->next == head(即最后一个结点指针域指向头结点)
typedef struct node
{
int data;
struct node *next;
}sqlist, *linkList;
三
拉丁方阵:
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct node
{
int data;
struct node *next;
} *linkList, sqlist;
//输出数据
Status visit(int e)
{
printf("%d ", e);
return OK;
}
//输出整个链表
Status ListTraverse(linkList L)
{
linkList p = L;
while(1)
{
visit(p->data);
p = p->next;