#include<stdio.h>
#include<stdlib.h>
struct linklist
{
char info;
linklist *link;
}node;
typedef struct linklist *pnode;
struct linkqueue
{
pnode r;
};
typedef struct linkqueue *plinkqueue;
plinkqueue createnullqueue()
{
plinkqueue paqu;
paqu =(plinkqueue)malloc(sizeof(struct linklist));
if(paqu!=NULL)
{
paqu->r=NULL;
}
else printf("创建空队列失败\n");
return paqu;
}
int isnulllinkqueue(plinkqueue paqu)
{
return (paqu->r==NULL);
}
void enqueue_link(plinkqueue paqu,char x)
{
pnode p,q;
p=(pnode)malloc(sizeof(struct linklist));
if(p==NULL)
{
printf("入队结点申请失败\n");
}
else
{
p->info=x;
p->link=NULL;
if(paqu->r==NULL)
{
paqu->r=p;
paqu->r->link=paqu->r;
}
else
{
q=paqu->r->link;
paqu->r->link=p;
p->link=q;
paqu->r=p;
}
}
}
void dequeue_link(plinkqueue paqu)
{
pnode p;
if(paqu->r->link!=paqu->r)
{
p=paqu->r->link;
paqu->r->link=paqu->r->link->link;
free(p);
}
else
{
p=paqu->r;
paqu->r=NULL;
free(p);
}
}
void frontqueue_link(plinkqueue paqu)
{
if(paqu->r==NULL)
printf("队列已空\n");
printf("%3c",paqu->r->link->info);
}
int main()
{
plinkqueue paqu;
char data;
paqu=createnullqueue();
if(isnulllinkqueue(paqu))
{
printf("%d\n",isnulllinkqueue(paqu));
printf("当前空队列已经建立\n\n");
}
printf("请输入入队元素,以#结束\n");
scanf("%c",&data);
while(data!='#')
{
enqueue_link(paqu,data);
scanf("%c",&data);
}
while(!isnulllinkqueue(paqu))
{
frontqueue_link(paqu);
dequeue_link(paqu);
}
printf("\n\n");
if(isnulllinkqueue(paqu))
{
printf("%d\n",isnulllinkqueue(paqu));
printf("队列已空,出队完毕\n\n");
}
}
#include<stdlib.h>
struct linklist
{
char info;
linklist *link;
}node;
typedef struct linklist *pnode;
struct linkqueue
{
pnode r;
};
typedef struct linkqueue *plinkqueue;
plinkqueue createnullqueue()
{
plinkqueue paqu;
paqu =(plinkqueue)malloc(sizeof(struct linklist));
if(paqu!=NULL)
{
paqu->r=NULL;
}
else printf("创建空队列失败\n");
return paqu;
}
int isnulllinkqueue(plinkqueue paqu)
{
return (paqu->r==NULL);
}
void enqueue_link(plinkqueue paqu,char x)
{
pnode p,q;
p=(pnode)malloc(sizeof(struct linklist));
if(p==NULL)
{
printf("入队结点申请失败\n");
}
else
{
p->info=x;
p->link=NULL;
if(paqu->r==NULL)
{
paqu->r=p;
paqu->r->link=paqu->r;
}
else
{
q=paqu->r->link;
paqu->r->link=p;
p->link=q;
paqu->r=p;
}
}
}
void dequeue_link(plinkqueue paqu)
{
pnode p;
if(paqu->r->link!=paqu->r)
{
p=paqu->r->link;
paqu->r->link=paqu->r->link->link;
free(p);
}
else
{
p=paqu->r;
paqu->r=NULL;
free(p);
}
}
void frontqueue_link(plinkqueue paqu)
{
if(paqu->r==NULL)
printf("队列已空\n");
printf("%3c",paqu->r->link->info);
}
int main()
{
plinkqueue paqu;
char data;
paqu=createnullqueue();
if(isnulllinkqueue(paqu))
{
printf("%d\n",isnulllinkqueue(paqu));
printf("当前空队列已经建立\n\n");
}
printf("请输入入队元素,以#结束\n");
scanf("%c",&data);
while(data!='#')
{
enqueue_link(paqu,data);
scanf("%c",&data);
}
while(!isnulllinkqueue(paqu))
{
frontqueue_link(paqu);
dequeue_link(paqu);
}
printf("\n\n");
if(isnulllinkqueue(paqu))
{
printf("%d\n",isnulllinkqueue(paqu));
printf("队列已空,出队完毕\n\n");
}
}