#include<stdio.h>
#include<stdlib.h>
//#include "iostream.h"
//#include <iostream>
//using namespace std;
#define MaxSize 10
#define ElemType int
typedef struct {
ElemType * data;
int front,rear;
}SqQueue;
bool InitQueue(SqQueue &Q){
Q.data = new ElemType[MaxSize];
if(Q.data == NULL){
printf("Fail to initalize! \n");
return false;
}else{
Q.front = Q.rear = 0;
return true;
}
}
bool EnQueue(SqQueue &Q,ElemType e){
if((Q.rear+1) % MaxSize == Q.front){ //队满
return false;
}else{
Q.data[Q.rear] = e;
Q.rear = (Q.rear+1)% MaxSize;
return true;
}
}
ElemType DeQueue(SqQueue &Q){
if(Q.rear == Q.front){ //队空
printf("The Queue is NULL.Fail to delete queue! \n");
return -1;
}else{
ElemType e;
e = Q.data[Q.front];
/*Q.data[Q.front] = NULL;*/
Q.front = (Q.front+1)% MaxSize;
return e;
}
}
ElemType GetHead(SqQueue Q){
if(Q.rear == Q.front){ //队空
printf("The Queue is NULL\n");
return -1;
}else{
ElemType e;
e = Q.data[Q.front];
return e;
}
}
void printQueue(SqQueue &Q){
if(Q.front == Q.rear)
printf("The Queue is NULL!");
else{
int i;
ElemType temp[MaxSize];
printf("Now the Queue is (from front to rear):");
for(i=0; Q.front != Q.rear ; i++){ //先依次出队,存到数组,输出
temp[i] = DeQueue(Q);
printf(" %d",temp[i]);
/*cout<<" "<<temp[i];*/
}
for(int j=0;j<i;j++){ // 恢复入队
EnQueue(Q,temp[j]);
}
}
}
int MenuSelect(){
int s;
do{
printf("\n ************ MENU ************ \n");
printf("1.InitQueue \n");
printf("2.EnQueue \n");
printf("3.DeQueue \n");
printf("4.GetHead \n");
printf("5.printQueue \n");
printf("6.exit \n");
printf("Please select (1-6):");
scanf("%d",&s);
}while(s<1 || s>6);
return s;
}
void main(void){
bool result;
SqQueue Q;
ElemType e;
while(1){
switch(MenuSelect()){
case 1:
result = InitQueue((SqQueue &) Q);
if(result)
printf("Queue is initialized successfully! \n");
else
printf("Fail to initialize Queue! \n");
break;
case 2:
printf("please input the elem you wanna enter: ");
scanf("%d",&e);
/*cin>>e;*/
result = EnQueue((SqQueue &)Q,e);
if(result)
printf("Enter successfully! \n");
else
printf("Fail to enter! \n");
printQueue((SqQueue &)Q);
break;
case 3:
e = DeQueue((SqQueue &)Q);
printf("The elem delete is : %d",e);
/*cout<<"The elem delete is : "<<e ;*/
printf(" \n");
printQueue((SqQueue &)Q);
break;
case 4:
e = GetHead(Q);
printf("The head is : %d",e);
/*cout<<"The head is : "<<e;*/
printf(" \n");
printQueue((SqQueue &)Q);
break;
case 5:
printQueue((SqQueue &)Q);
break;
case 6:
exit(0);
}
}
}
循环队列初始化、进队出队、打印输出
需积分: 46 198 浏览量
2014-03-17
13:46:58
上传
评论 5
收藏 1KB RAR 举报
秋风知劲草
- 粉丝: 24
- 资源: 4
最新资源
- 细胞的奇迹:吃出来的免疫力(美亚畅销书!作者的TED演讲播放量超300万次!《谷物大脑》作者、《三联生活周刊》推荐!吃下对的食物,改善你的... (Z-Library).azw3
- 智能手机产品拆解,使用mindmaster打开
- 11111111111111
- 统信系统ARM64依赖openssl-1.0.2版本的libssl.so.10和libcrypto.so.10文件
- 奥比中光python sdk
- 冯超楠17.py
- OCR识别-基于视觉注意力机制Attention实现的OCR识别算法-附项目源码-优质项目实战.zip
- Java 使用蒙特卡洛方法估算PI的近似值(源代码)
- main.cpp
- 电子木鱼小程序源码电子木鱼小程序源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈