#include <stdio.h>
#define Max 100
//结构体
typedef struct Queue{
int data[Max];
int front;//队头下标
int rear;//队尾下标
}Queue;
//初始化队列
void init(Queue ** que){
(*que) = (Queue*)malloc(sizeof(Queue));
(*que)->front = (*que)->reat = 0;
}
//判断队空
int isEmpty(Queue * que){
if(que->front == que->reat){//队头队尾下标相等则为空
return 1;
}else{
return 0;
}
}
//判断队满
int isFull(Queue * que){
if((que->rear+1)%Max == front){//此为循环队列的判断(若是不循环则直接判断rear是否等于max-1)
return 1;
}else{
return 0;
}
}
//入队
int push(Queue * que,int x){
if(isFull(que)){//先判断是否队满
return 0;//队满则入队失败
}else{
que->rear = (que->reat+!)%Max;//先将rear移动
que->data[que->rear] = x;//给移动过后的队头位置赋值
return 1;
}
}
//出队
int pop(Queue * que,int *x){
if(isEmpty(que)){//判断是否队空
return 0;
}else{
que->front = (que->front+!)%Max;//先移动队头指针
(*x) = que->data[que->front];
return 1;
}
}
队列-顺序(循环)队列及其简单算法
最新推荐文章于 2024-08-14 21:43:03 发布