循环队列

循环队列

可以解决顺序队列的伪上溢出问题

代码

#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

#define MaxSize 10
typedef struct{
    int data[MaxSize];
    int front,rear;
}SqQueue;

//初始化
void InitQueue(SqQueue &Q){
    Q.rear = Q.front = 0;
}

//判断队空
bool QueueEmpty(SqQueue &Q){
    if (Q.rear == Q.front)
	return true;
    else
	return false;
}

//入队
bool EnQueue(SqQueue &Q, int x){
    if ((Q.rear + 1) % MaxSize == Q.front)
	return false;
    Q.data[Q.rear] = x;
    Q.rear = (Q.rear + 1) % MaxSize;
    return true;
}

//出队
bool DeQueue(SqQueue &Q, int &x){
    if (Q.rear == Q.front)
	return false;
    x = Q.data[Q.front];
    Q.front = (Q.front + 1) % MaxSize;
    return true;
}

//读队首元素
bool GetHead(SqQueue &Q,int &x){
    if (Q.rear == Q.front)
	return false;
    x = Q.data[Q.front];
    return true;
}

int main(){
    SqQueue Q;
    InitQueue(Q);

    int n;
    cin >> n;
    for (int i = 0; i < n; i ++)
    {
    	int x;
    	cin >> x;
    	EnQueue(Q,x);
    }

    cout << "Q.front: "<<Q.front << " " << "Q.rear: " << Q.rear << endl;
    
    for (int i = 0; i < n; i ++)
    {
    	int x;
    	DeQueue(Q,x);
    	cout << x << " ";
    }
    
    cout << endl << "Q.front: "<<Q.front << " " << "Q.rear: " << Q.rear << endl;
    return 0;
}
/*
4 
1 0 2 4
/*
posted @ 2021-07-26 21:24  Treasure_lee  阅读(51)  评论(0编辑  收藏  举报