#include <iostream>
using namespace std;
/**
队列 先进先出
1, 初始化队列initqueue
2,入队push
3,出队del
4,显示所有队列元素display
*/
#define MaxSize 50
typedef char ElemType;
typedef struct {
ElemType queue[MaxSize];
int front,rear;
} QueueType;
void initQueue(QueueType *Q){
Q->front=Q->rear=-1;
}
void push(QueueType *Q ,ElemType x){
if(Q ->rear == MaxSize){
cout<<"队列满了"<<endl;
}else{
Q->rear++;
Q->queue[Q->rear]=x;
}
}
void del(QueueType *Q){
if(Q -> front == Q-> rear){
cout<<"队列为空"<<endl;
}else{
Q->front++;
}
}
void display(QueueType *Q){
cout<<"队列为空"<<endl;
int i;
for(i=Q->front+1 ; i<=Q->rear; i++){
printf("%C",Q->queue[i]);
}
}
void main(){
QueueType *queue;
initQueue(queue);
cout<<"依次插入a,b,c,d"<<endl;
push(queue,'a');
push(queue,'b');
push(queue,'c');
push(queue,'d');
display(queue);
cout<<"出队列"<<endl;
del(queue);
display(queue);
}
#include <iostream>
using namespace std;
/**
队列
循环队列 解决溢出问题
1, 初始化队列initqueue
2,入队push
3,出队del
4,显示所有队列元素display
*/
#define MaxSize 50
typedef char ElemType;
typedef struct {
ElemType queue[MaxSize];
int front,rear;
} QueueType;
void initQueue(QueueType *Q){
Q->front=Q->rear=-1;
}
void push(QueueType *Q ,ElemType x){
if(Q ->front == -1 && (Q->rear+1) == MaxSize){
cout<<"队列满了"<<endl;
}else if(Q->rear+1 % MaxSize == Q ->front){
cout<<"队列满了"<<endl;
}else{
Q->rear=(Q->rear+1) %MaxSize;
Q->queue[Q->rear]=x;
}
}
void del(QueueType *Q){
if(Q -> front == Q-> rear){
cout<<"队列为空"<<endl;
}else{
Q->front = (Q->front+1) %MaxSize;
}
}
void display(QueueType *Q){
cout<<"队列为:"<<endl;
int i=Q->front+1;
for(i=Q->front+1 ; i<=Q->rear; i++){
printf("%C",Q->queue[i]);
}
}
void main(){
QueueType *queue;
initQueue(queue);
cout<<"依次插入a,b,c,d"<<endl;
push(queue,'a');
push(queue,'b');
push(queue,'c');
push(queue,'d');
display(queue);
cout<<"出队列"<<endl;
del(queue);
display(queue);
}