使用数组实现队列
基本思路:队列和栈其实差不多,都是运算受限制的线性表,操作原理类似,一个成员记录队首,一个成员记录队尾,当队首成员等于队尾成员时即队列空,当队尾成员等于数组最大长度减一时即队列满,但这种会造成假溢出,入队元素在队尾,出队元素在队首。
整体代码:
#include<iostream>
const int quesize=100;
typedef struct Queue{
int data[quesize]={0};
int front=0;
int rear=0;
int size=0;
}Queue;
using namespace std;
int Isempty(Queue*); //判队列空
int Isfull(Queue*); //判栈满
void Inputdata(Queue*); //输入队列数据
int Enqueue(Queue*,int); //插入元素
int Dequeue(Queue*); //删除元素
void Display(Queue*); //显示队首元素
int Quelength(Queue*); //计算队列长度
int main(void){
Queue p;
Inputdata(&p);
for(int i=0;i<9;i++)cout<<p.data[i]<<endl;
return 0;
}
int Isempty(Queue* p){
return p->rear==p->front;
}
int Isfull(Queue* p){
return p->front=quesize-1; //这会造成假溢出
}
void Inputdata(Queue* p){
int x;
while(cin>>x) p->data[p->rear++]=x;
cin.clear();
cin.ignore();
}
int Enqueue(Queue* p,int x){
p->data[p->rear++]=x;
return 1;
}
int Dequeue(Queue* p){
return p->data[p->front++];
}
void Display(Queue* p){
cout<<p->data[p->front];
}
int Quelength(Queue* p){
return p->rear-p->front;
}