typedef char datatype;
typedef struct node
{
datatype data[20];
struct node *llink,*rlink;
}linklist;
/* 创建双向循环链表 */
linklist * create(int n)
{
stud *p,*h,*s;
int i; /* 计数器*/
if((h=(linklist *)malloc(sizeof(linklist))) == NULL) /* 分配空间并检测 */
{
printf("不能分配内存空间!");
exit(0);
}
h->data[0]='/0'; /* 把表头结点的数据域置空 */
h->llink=NULL; /* 把表头结点的前趋链域置空 */
h->rlink=NULL; /* 把表头结点的后继链域置空 */
p=h; /* p指向表头结点 */
for(i=0;i<n;i++)
{
if((s=(linklist *)malloc(sizeof(linklist))) == NULL) /* 生成新结点,分配空间并检测 */
{
printf("不能分配内存空间!");
exit(0);
}
p->rlink=s; /* 将p与s连接,p的后继指针指向s */
printf("请输入第%d个数:",i+1);
scanf("%s",s->data); /* 在当前结点数据域中存储数据 */
s->llink=p; /* s的前趋指针指向p */
s->rlink=NULL; /* 当前结点s的后继链域置空 */
p=s; /* p 指向当前结点*/
}
h->llink=s;
p->rlink=h;
return(h);
}