队空条件:
尾 == 头
队满条件:
(尾+1)%Maxsize == 头;若是题目硬性要求不能有多余节点,则结构体应该加入一个变量判断队里是否有元素,或者是元素是否满
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 10
typedef struct quere{
int data[Maxsize];
int rear,front;
}Quere;
bool emptyQuere(Quere &q){
if(q.front = q.rear){
return true;
}
return false;
}
void InitQuere(Quere &q){
q.front = q.rear = 0;
}
//增
bool enQuere(Quere &q,int data){
if((q.rear+1)%Maxsize == q.front){ // 如果队满。
return false;
}
q.data[q.rear] = data;
q.rear = (q.rear+1)%Maxsize;
return true;
}
// 删除一个队头,并返回值;
bool DeQuere(Quere &q,int &x){
if((q.rear+1)%Maxsize == q.front){
return false;
}
x = q.data[q.front];
q.front = (q.front+1)%Maxsize;
return true;
}
//查
bool GetHead(Quere &q,int &x){
if(q.front == q.rear){
return false;
}
x = q.data[q.front];
return true;
}
int main(){
Quere q;
int x;
InitQuere(q);
enQuere(q,1);
enQuere(q,2);
enQuere(q,3);
DeQuere(q,x);
printf("%d\n",x);
DeQuere(q,x);
printf("%d\n",x);
GetHead(q,x);
printf("%d\n",x);
}