数据结构,循环队列各功能的实现
来源:互联网 发布:java并发编程视频教程 编辑:程序博客网 时间:2024/05/16 11:52
#include<stdio.h>
#include<malloc.h>
#define MAXLEN 100
typedef struct{
int data[MAXLEN];
int front,rear;
}csequeue;
void emptyqueue(csequeue *q)
{
q->front=q->rear=MAXLEN-99;
}
void Inqueue(csequeue *q)
{
int x;
printf("\t\t请输入要进队的整数,以数字0结束!!!\n");
while(1)
{
scanf("%d",&x);
if(q->front==(q->rear+1)%MAXLEN)
{
printf("\t\t队列已满,无法进队\n");
return ;
}
else if(x==0)
break;
else
{
q->rear=(q->rear+1)%MAXLEN;
q->data[q->rear]=x;
}
}
printf("\t\t进队成功\n");
}
void Outqueue(csequeue *q)
{
if(q->front==q->rear)
{
printf("\t\t队列为空,无法出队\n");
return ;
}
else
{
q->front=(q->front+1)%MAXLEN;
printf("\t\t输出队首元素\n");
printf("%d\n",q->data[q->front]);
}
}
void Showqueue(csequeue *q)
{
int i;
if(q->rear==q->front)
{
printf("\t\t队列为空,请将元素入队\n");
return ;
}
else
{
i=q->front;
printf("\t\t队列中的元素为:\n");
while(1)
{
if(i==q->rear)
break;
else
{
i=(i+1)%MAXLEN;
printf("%d ",q->data[i]);
}
}
}
}
void Lenthqueue(csequeue *q)
{
int len;
len=(q->rear-q->front+MAXLEN)%MAXLEN;
printf("\t\t%d\n",len);
}
int main ()
{
int m;
csequeue q;
emptyqueue(&q);
printf("\t\t\t ----循环队列----\n\n");
while(1)
{
printf("\n\t\t*******************************************\n");
printf("\t\t* 指令说明 *\n");
printf("\t\t* 1:进 队 *\n");
printf("\t\t* 2:出 队 *\n");
printf("\t\t* 3:显 示 *\n");
printf("\t\t* 4:求队列长度 *\n");
printf("\t\t* 0:返 回 *\n");
printf("\t\t*******************************************\n\n");
printf("\t请输入指令:");
scanf("%d",&m);
if(m==1)
Inqueue(&q);
else if(m==2)
Outqueue(&q);
else if(m==3)
Showqueue(&q);
else if(m==4)
Lenthqueue(&q);
else if(m==0)
return 0;
else
printf("输入数据错误,请重新输入!!!\n");
}
return 0;
}
#include<malloc.h>
#define MAXLEN 100
typedef struct{
int data[MAXLEN];
int front,rear;
}csequeue;
void emptyqueue(csequeue *q)
{
q->front=q->rear=MAXLEN-99;
}
void Inqueue(csequeue *q)
{
int x;
printf("\t\t请输入要进队的整数,以数字0结束!!!\n");
while(1)
{
scanf("%d",&x);
if(q->front==(q->rear+1)%MAXLEN)
{
printf("\t\t队列已满,无法进队\n");
return ;
}
else if(x==0)
break;
else
{
q->rear=(q->rear+1)%MAXLEN;
q->data[q->rear]=x;
}
}
printf("\t\t进队成功\n");
}
void Outqueue(csequeue *q)
{
if(q->front==q->rear)
{
printf("\t\t队列为空,无法出队\n");
return ;
}
else
{
q->front=(q->front+1)%MAXLEN;
printf("\t\t输出队首元素\n");
printf("%d\n",q->data[q->front]);
}
}
void Showqueue(csequeue *q)
{
int i;
if(q->rear==q->front)
{
printf("\t\t队列为空,请将元素入队\n");
return ;
}
else
{
i=q->front;
printf("\t\t队列中的元素为:\n");
while(1)
{
if(i==q->rear)
break;
else
{
i=(i+1)%MAXLEN;
printf("%d ",q->data[i]);
}
}
}
}
void Lenthqueue(csequeue *q)
{
int len;
len=(q->rear-q->front+MAXLEN)%MAXLEN;
printf("\t\t%d\n",len);
}
int main ()
{
int m;
csequeue q;
emptyqueue(&q);
printf("\t\t\t ----循环队列----\n\n");
while(1)
{
printf("\n\t\t*******************************************\n");
printf("\t\t* 指令说明 *\n");
printf("\t\t* 1:进 队 *\n");
printf("\t\t* 2:出 队 *\n");
printf("\t\t* 3:显 示 *\n");
printf("\t\t* 4:求队列长度 *\n");
printf("\t\t* 0:返 回 *\n");
printf("\t\t*******************************************\n\n");
printf("\t请输入指令:");
scanf("%d",&m);
if(m==1)
Inqueue(&q);
else if(m==2)
Outqueue(&q);
else if(m==3)
Showqueue(&q);
else if(m==4)
Lenthqueue(&q);
else if(m==0)
return 0;
else
printf("输入数据错误,请重新输入!!!\n");
}
return 0;
}
阅读全文
0 0
- 数据结构,循环队列各功能的实现
- 简单数据结构的实现之循环队列
- 数据结构的C实现_循环队列
- 数据结构循环队列的实现c程序
- C++数据结构--循环队列的实现
- 数据结构的C实现_循环队列
- 数据结构之循环队列的实现
- [数据结构] 队列的循环数组实现
- 【数据结构】循环队列的实现(c++)
- 循环队列的表示和实现(数据结构)
- 【C++数据结构】数组循环队列的实现
- 数据结构-循环队列的基本实现操作
- JAVA数据结构之循环队列的实现
- 【数据结构】循环队列的顺序实现
- [数据结构]队列实现、循环队列的不同实现
- 数据结构-->(循环)队列 【队列的顺序实现】ADT
- 数据结构:循环队列--Java实现
- 数据结构循环队列Java实现
- JS中操作字符串的常用方法
- Android studio 自动导入(全部)包 import
- 二维码跳转android或ios下载app中转处理
- Java线程并发中的锁——Lock(上)
- zabbix自动发现
- 数据结构,循环队列各功能的实现
- HDU 1051 Wooden Sticks (贪心)
- "ORA-01779: 无法修改与非键值保存表对应的列"问题
- 11-散列1 电话聊天狂人 (25分)
- imx6ul之OpenWRT添加无线USB网卡
- 一篇文章告诉你,TLS 1.3 如何用性能为 HTTPS 正名
- Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法
- 设计模式C++实现(17)——命令模式
- 初学make与makefile