#include "stdio.h"
#include "stdlib.h"
typedef struct node
{int data;
struct node *next;
}Linklist;
Linklist *createcircularlist()
/*建立不带表头和头结点的单循环链表,只有尾指针*/
{int x;
Linklist *r,*p,*q;
r=(Linklist *)malloc(sizeof(Linklist));
scanf("%d",&x);
r->data=x;
r->next=r;
scanf("%d",&x);
while(x!=0)
{
p=(Linklist *)malloc(sizeof(Linklist));
p->data=x;
p->next=r;
r->next=r;
r=p;
scanf("%d",&x);
}
return r;
}
void output(Linklist *r)/*输出链表*/
{
Linklist *p;int j=0;
p=r;
while(p->next!=r)
{p=p->next;
printf("%d ",p->data);
j++;
}
printf("\nlength=%d\n",j);
}
void add(Linklist *r,int x)/*入队*/
{
Linklist *p;
p=(Linklist *)malloc(sizeof(Linklist));
p->data=x;
if(r==NULL)
{r=p;r->next=r;}
else
{p->next=r->next;
r->next=p;
r=p;
}
}
int dele(Linklist *r)/*出队*/
{ Linklist *p;int x;
if(r==NULL)
return 0;
else if(r->next==r)
{x=r->data;
free(r);
r=NULL;
return x;
}
else
{p=r->next;
x=p->data;
r->next=p->next;
free(p);
return x;
}
}
void main()
{ Linklist *r; int x;
r=createcircularlist();
output(r);
scanf("%d",&x);
add(r,x);
output(r);
x=dele(r);
printf("%d",x);
output(r);
}
#include "stdlib.h"
typedef struct node
{int data;
struct node *next;
}Linklist;
Linklist *createcircularlist()
/*建立不带表头和头结点的单循环链表,只有尾指针*/
{int x;
Linklist *r,*p,*q;
r=(Linklist *)malloc(sizeof(Linklist));
scanf("%d",&x);
r->data=x;
r->next=r;
scanf("%d",&x);
while(x!=0)
{
p=(Linklist *)malloc(sizeof(Linklist));
p->data=x;
p->next=r;
r->next=r;
r=p;
scanf("%d",&x);
}
return r;
}
void output(Linklist *r)/*输出链表*/
{
Linklist *p;int j=0;
p=r;
while(p->next!=r)
{p=p->next;
printf("%d ",p->data);
j++;
}
printf("\nlength=%d\n",j);
}
void add(Linklist *r,int x)/*入队*/
{
Linklist *p;
p=(Linklist *)malloc(sizeof(Linklist));
p->data=x;
if(r==NULL)
{r=p;r->next=r;}
else
{p->next=r->next;
r->next=p;
r=p;
}
}
int dele(Linklist *r)/*出队*/
{ Linklist *p;int x;
if(r==NULL)
return 0;
else if(r->next==r)
{x=r->data;
free(r);
r=NULL;
return x;
}
else
{p=r->next;
x=p->data;
r->next=p->next;
free(p);
return x;
}
}
void main()
{ Linklist *r; int x;
r=createcircularlist();
output(r);
scanf("%d",&x);
add(r,x);
output(r);
x=dele(r);
printf("%d",x);
output(r);
}