# include<iostream>
# include<math.h>
using namespace std;
# define MaxSize 50
typedef int Elemtype;
typedef struct{
Elemtype data[MaxSize];
int front,rear;
} Queue;
int ans[7]={0,1,2,3,4,5,6};
void InitQueue(Queue &Q){
Q.rear = Q.front = 0;
}
bool empty(Queue &Q){
if(Q.rear == Q.front)
return true;
return false;
}
bool full(Queue &Q){
if((Q.rear+1)%MaxSize==Q.front) //如果队尾指针下一个位置是队头
return true; //这样会牺牲一个存储空间
return false;
}
int len(Queue &Q){
return (Q.rear - Q.front + MaxSize) % MaxSize; //因为rear指向的是后一个位置,所以不需要再加一
}
bool enQueue(Queue &Q,Elemtype x){
if(full(Q))
return false;
Q.data[Q.rear] = x; //队头元素直接放
Q.rear = (Q.rear+1)%MaxSize; //队尾指针指向的是元素下一个存放的地址
return true;
}
bool deQueue(Queue &Q,Elemtype &x){
if(empty(Q))
return false;
x = Q.data[Q.front];
Q.front = (Q.front+1)%MaxSize; //队头指针加一取模
return true;
}
int main(void){
Queue Q;
int a,n=3;
InitQueue(Q);
for(int i = 0;i < 7;i++)
enQueue(Q,ans[i]);
while(n--){
deQueue(Q,a);
printf("%d ",a);
}
printf("\n%d %d ",len(Q),Q.data[Q.front]);
return 0;
}
数据结构---队列
最新推荐文章于 2023-06-13 12:34:57 发布