数据结构之循环队列(改)
来源:互联网 发布:美容院调整型内衣 知乎 编辑:程序博客网 时间:2024/06/05 15:22
声明:原版请看《循环队列的简单实现》
//循环队列1.cpp:定义控制台应用程序的入口点。
//作者Hecher.ShengTao.Tan
#include"stdafx.h"
#include<windows.h>
#defineMAX_QUEUE_SIZE6
typedefintDataType;
typedefstructLoopQueue{
DataType data[MAX_QUEUE_SIZE];
intfront;
intrear;
intcount;
}LoopQueue;
enumCommond{
EXIT,INITQ,ENQ,DEQ,GETF,GETLEN
}Cmd;
void InitQueue(LoopQueue&q);
bool IsFULL(LoopQueue&q);
bool IsEmpty(LoopQueue&q);
bool EnQueue(LoopQueue&q,int e);
DataType DeQueue(LoopQueue &q);
DataType Getfront(LoopQueue &q);
DataType GetElements(LoopQueue &q);
void Operate(LoopQueue&q){
intTEMP;
boolBOOL;
printf("\t\t\tCmd List\n");
printf("\t\t\t------------\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_GREEN);
printf("\t\t\t1-InitQueue\n");
printf("\t\t\t2-EnQueue\n");
printf("\t\t\t3-DeQueue\n");
printf("\t\t\t4-Getfront\n");
printf("\t\t\t5-GetElements\n");
printf("\t\t\t0-Exit\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_RED |FOREGROUND_BLUE);
printf("\t\t\t------------\n");
while(!EXIT){
printf("\t\t\t\t\tEnter a number of the \"Cmd List\":");
scanf_s("%d", &TEMP);
Cmd =(enumCommond)TEMP;
switch(Cmd){
caseINITQ:
InitQueue(q);
printf("Is ok!\n");
break;
caseENQ:
printf("Enter a number for the Queue:");
scanf_s("%d", &TEMP);
BOOL= EnQueue(q, TEMP);
if(BOOL){
printf("The Queue is full!\n");
printf("The Last numner is not insert!\n");
}
break;
caseDEQ:
TEMP= DeQueue(q);
if(TEMP == 0)
printf("The Queue is NULL!\n");
else
printf("The number that been removed is:%d\n", TEMP);
break;
caseGETF:
printf("%d\n", Getfront(q));
break;
caseGETLEN:
printf("%d\n", GetElements(q));
break;
caseEXIT:
return;
break;
default:
printf("Cmd is Error!\n");
break;
}
}
}
int main(){
LoopQueue q;
Operate(q);
return0;
}
void InitQueue(LoopQueue&q){
q.front=q.rear = 0;
q.count= 0;
}
bool IsFULL(LoopQueue&q){
return((q.rear + 1) % MAX_QUEUE_SIZE==q.front);
}
bool IsEmpty(LoopQueue&q){
return(q.rear==q.front);
}
bool EnQueue(LoopQueue&q,DataTypee){
if(IsFULL(q)){
returntrue;
}
else{
q.data[q.rear]=e;
q.rear= (q.rear + 1) % MAX_QUEUE_SIZE;
q.count++;
returnfalse;
}
}
DataType DeQueue(LoopQueue &q){
inte;
if(IsEmpty(q)){
return0;
}
else{
e = q.data[q.front];
q.front= (q.front + 1) % MAX_QUEUE_SIZE;
q.count--;
returne;
}
}
DataType Getfront(LoopQueue &q){
returnq.data[q.front];
}
DataType GetElements(LoopQueue &q){
returnq.count;
}
- 数据结构之循环队列(改)
- 数据结构之顺序队列(循环队列)
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构 之 循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 数据结构之循环队列
- 循环队列(数据结构)
- 复习数据结构之循环队列
- 数据结构之循环队列操作
- 数据结构之顺序循环队列
- SM04在线用户管理
- 【spring mvc】Spring MVC配置过滤器并在过滤器中使用bean
- Android 一文告诉你到底是用Dialog,Snackbar,还是Toast
- 相机模型详解
- mybatis的sql语句text类型转换错误
- 数据结构之循环队列(改)
- ajax请求方法后面加随机数的作用
- CodeForces 645 A.Amity Assessment(水~)
- Flask程序的基本结构
- ORACLE 替换字符
- PHP---史上最严格的身份证验证
- sql优化
- jQuery中设置form表单
- php图形图像函数的运用-验证码