采用损失一个空间的顺序存储实现队列的初始化、入队、出队操作 完整代码
时间: 2024-05-27 10:11:11 浏览: 101
采用顺序存储实现栈的初始化、入栈、出栈操作
#include<iostream>
using namespace std;
#define MaxSize 50 //队列最大长度
struct Queue{
int data[MaxSize]; //存储队列元素
int front,rear; //队头、队尾指针
};
//初始化队列
void InitQueue(Queue &Q){
Q.front = Q.rear = 0; //队头、队尾指针初始值为0
}
//判断队列是否为空
bool QueueEmpty(Queue Q){
if(Q.front == Q.rear) //队头指针等于队尾指针时,队列为空
return true;
else
return false;
}
//入队操作
bool EnQueue(Queue &Q,int x){
if(Q.rear == MaxSize){ //队列已满,无法入队
cout<<"队列已满,无法入队!"<<endl;
return false;
}
Q.data[Q.rear] = x; //新元素入队
Q.rear++; //队尾指针后移
return true;
}
//出队操作
bool DeQueue(Queue &Q,int &x){
if(QueueEmpty(Q)){ //队列为空,无法出队
cout<<"队列为空,无法出队!"<<endl;
return false;
}
x = Q.data[Q.front]; //队头元素出队
Q.front++; //队头指针后移
return true;
}
int main(){
Queue Q;
InitQueue(Q); //初始化队列
//入队操作
cout<<"请输入入队元素(以-1结束):";
int x;
cin>>x;
while(x != -1){
EnQueue(Q,x);
cin>>x;
}
//出队操作
cout<<"出队元素为:";
int y;
while(DeQueue(Q,y)){
cout<<y<<" ";
}
cout<<endl;
return 0;
}
阅读全文