循环链表实现队列
来源:互联网 发布:淘宝天猫运营工作 编辑:程序博客网 时间:2024/05/21 11:06
#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");
}
}
0 0
- 循环链表实现循环队列
- 链表实现循环队列
- 循环队列-链表实现
- 循环链表实现队列
- 循环链表实现队列
- 循环链表实现队列
- Java数组实现循环队列、Java链表实现队列
- 循环队列模版(链表实现)
- 循环队列的链表实现
- 用循环链表实现队列
- ArrayList链表实现循环队列
- 基于链表、数组实现队列、循环队列
- 循环链表队列
- 数据结构:双向链表实现队列与循环链表
- 数据结构---双向链表实现队列与循环链表
- 循环链表,栈,队列,链表实现
- 队列实现 (双向循环链表 C++)
- 队列—链表与循环数组实现
- 创业2016
- 基于Lagrange-Newton法的SQP局部算法python实现
- 查看电脑PATH原始值
- 自定义ViewGroup(1)--横向布局
- 贪心算法_最小生成树_Kruskal(克鲁斯卡尔)算法
- 循环链表实现队列
- Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例
- linux 安装 ruby on rails
- 自定义Viewgroup(2)--可滚动的横向布局
- CAA Device Diagnosis Example
- 没有时间看MOOC怎么办?
- 我已经是一只废桔了(素数筛选+二分查找)
- 基于TI-RTOS的CC2650DK开发(13)---门
- Hbase葱岭探秘--过滤器Api