#include <iostream>
using namespace std;
#define MAXSIZE 10
//顺序队
typedef struct Queue{
int data[MAXSIZE];
int front;
int rear;
}Queue;
//初始化
void initQueue(Queue &q){
q.front = 0;
q.rear = 0;
}
//入队
bool pushQueue(Queue &q,int data){
if((q.rear + 1) % MAXSIZE == q.front){//判断栈满
return false;
}
q.rear = (q.rear + 1 ) % MAXSIZE;
q.data[q.rear] = data;
return true;
}
//出队
bool popQueue(Queue &q,int &popData){
if(q.front == q.rear){
return false;
}
q.front = (q.front + 1) % MAXSIZE;
popData = q.data[q.front];
return true;
}
//查看队头元素
bool getQueue(Queue q,int &getData){
if(q.front == q.rear){
return false;
}
int getFront = (q.front+1) % MAXSIZE;
getData = q.data[getFront];
return true;
}
//判断是否队空
bool isEmpty(Queue q){
if(q.front == q.rear){
return true;
}else{
return false;
}
}
int main()
{
Queue q;
initQueue(q);
//入队顺序
for(int i = 1;i <=10 ;i++){
pushQueue(q,i);
}
int getData;
getQueue(q,getData);
cout<<"队头元素是:"<<getData<<endl;
while(!isEmpty(q)){
int popData;
popQueue(q,popData);
cout<<"出队元素是:"<<popData<<endl;
}
if(isEmpty(q)){
cout<<">>>>>>>>>>再次入队<<<<<<<<<<"<<endl;
for(int i = 10;i >=1 ;i--){
pushQueue(q,i);
}
int getData;
getQueue(q,getData);
cout<<"队头元素是:"<<getData<<endl;
while(!isEmpty(q)){
int popData;
popQueue(q,popData);
cout<<"出队元素是:"<<popData<<endl;
}
}
return 0;
}
C/C++顺序队 入队,出队练习
最新推荐文章于 2024-11-06 19:55:44 发布