数据结构之循环队列(改)
2017-04-28 10:56
357 查看
声明:原版请看《循环队列的简单实现》
//
循环队列1.cpp:
定义控制台应用程序的入口点。
//作者Hecher.ShengTao.Tan
#include
"stdafx.h"
#include
<windows.h>
#define
MAX_QUEUE_SIZE6
typedef
intDataType;
typedef
structLoopQueue{
DataType data[MAX_QUEUE_SIZE];
intfront;
intrear;
intcount;
}LoopQueue;
enum
Commond{
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;
}
//
循环队列1.cpp:
定义控制台应用程序的入口点。
//作者Hecher.ShengTao.Tan
#include
"stdafx.h"
#include
<windows.h>
#define
MAX_QUEUE_SIZE6
typedef
intDataType;
typedef
structLoopQueue{
DataType data[MAX_QUEUE_SIZE];
intfront;
intrear;
intcount;
}LoopQueue;
enum
Commond{
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;
}
相关文章推荐
- 五、数据结构基础之循环队列C语言实现
- 数据结构之循环队列
- 数据结构:队列的顺序存储结构(循环队列)
- 数据结构之循环队列
- 【数据结构与算法基础】以数组实现的循环队列 / Circular Queue implemented by array
- 数据结构——循环队列操作
- 数据结构——队列及循环队列
- 看数据结构写代码(16)顺序队列的实现(循环队列)
- 数据结构基础(7) --循环队列的设计与实现
- 数据结构基础(5)--C语言实现循环队列--静态
- 【数据结构】——顺序循环队列的相关操作
- 数据结构之队列11循环队列定义及实现
- 数据结构之循环队列操作
- 数据结构之---C语言实现循环队列
- 数据结构(三)——队列及实现、循环队列实现
- 数据结构之循环队列
- 数据结构(C实现)------- 顺序队列(循环队列之少用一个存储空间实现) .
- 数据结构之循环队列
- 数据结构之静态循环队列(所有操作)
- 再回首,数据结构——循环队列上的常见操作