存储结构
typedef struct{
int data[MAXSIZE]; //存储数据的数组
int front,rear; //队头队尾指针
int size;
}Quene;
基本操作
//初始化
void initQuene(Quene &Q) {
Q.rear = 0;
Q.front = 0;
Q.size = 0;
}
//判空
bool isfull(Quene &Q) {
return Q.size == MAXSIZE;
}
//入队
void enQuene(Quene &Q,int e){
if(!isfull(Q)){
Q.data[Q.front] = e;
Q.front++;
Q.size++;
}
}
//出队
void deQuene(Quene &Q){
if(!isfull(Q)){
Q.data[Q.rear] = 0;
Q.rear++;
Q.size--;
}
}
//读队头元素
int getTop(Quene &Q){
if(!isfull(Q)){
return Q.data[Q.front-1];
}
return NULL;
}
//读队尾元素
int getRear(Quene &Q){
if(!isfull(Q)){
return Q.data[Q.rear];
}
return NULL;
}
总结测试
#include <iostream>
#define MAXSIZE 100
using namespace std;
typedef struct{
int data[MAXSIZE]; //存储数据的数组
int front,rear; //队头队尾指针
int size;
}Quene;
//初始化
void initQuene(Quene &Q) {
Q.rear = 0;
Q.front = 0;
Q.size = 0;
}
//判空
bool isfull(Quene &Q) {
return Q.size == MAXSIZE;
}
//入队
void enQuene(Quene &Q,int e){
if(!isfull(Q)){
Q.data[Q.front] = e;
Q.front++;
Q.size++;
}
}
//出队
void deQuene(Quene &Q){
if(!isfull(Q)){
Q.data[Q.rear] = 0;
Q.rear++;
Q.size--;
}
}
//读队头元素
int getTop(Quene &Q){
if(!isfull(Q)){
return Q.data[Q.front-1];
}
return NULL;
}
//读队尾元素
int getRear(Quene &Q){
if(!isfull(Q)){
return Q.data[Q.rear];
}
return NULL;
}
int main (){
Quene Q;
initQuene(Q);
enQuene(Q,1);
enQuene(Q,2);
enQuene(Q,3);
cout << getTop(Q) << getRear(Q) <<endl;
deQuene(Q);
cout << getTop(Q) << getRear(Q) <<endl;
deQuene(Q);
deQuene(Q);
return 0;
}
运行结果
(来自一位跨考的小白,欢迎纠错,大佬勿喷)