一、顺序队列的初始化
//顺序队列的初始化
#include
#include
#define MaxSize 10 //定义队列中元素的最大个数
typedef struct{
int data[MaxSize]; //静态数组存放队列元素
int front,rear; //队头指针和队尾指针
} SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear=Q.front=0; //初始化时,队头队尾指针指向0
return;
}
int main(){
SqQueue Q; //声明一个顺序队列
InitQueue(Q); //初始化队列
return 0;
}
二、顺序队列的判空
//顺序队列的判空
#include
#include
#define MaxSize 10 //定义队列中元素的最大个数
typedef struct{
int data[MaxSize]; //静态数组存放队列元素
int front,rear; //队头指针和队尾指针
} SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear=Q.front=0; //初始化时,队头队尾指针指向0
return;
}
//判断队列是否为空
bool QueueEmpty(SqQueue Q){
if(Q.rear==Q.front) return true; //队空条件
else return false;
}
int main(){
SqQueue Q; //声明一个顺序队列
InitQueue(Q); //初始化队列
QueueEmpty(Q); //判空
return 0;
}
三、顺序队列入队
//顺序队列入队
#include
#include
#define MaxSize 10 //定义队列中元素的最大个数
typedef struct{
int data[MaxSize]; //静态数组存放队列元素
int front,rear; //队头指针和队尾指针
} SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear=Q.front=0; //初始化时,队头队尾指针指向0
return;
}
//入队
bool EnQueue(SqQueue &Q,int x){
if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
Q.data[Q.rear]=x; //新元素插入队尾
Q.rear=(Q.rear+1)%MaxSize; //队尾指针加1取模
return true;
}
int main(){
SqQueue Q; //声明一个顺序队列
InitQueue(Q); //初始化队列
EnQueue(Q,11); //入队
EnQueue(Q,22);
EnQueue(Q,33);
//打印
printf("%d\n",Q.data[0]);
printf("%d\n",Q.data[1]);
printf("%d\n",Q.data[2]);
return 0;
}
四、顺序队列出队
//顺序队列出队
#include
#include
#define MaxSize 10 //定义队列中元素的最大个数
typedef struct{
int data[MaxSize]; //静态数组存放队列元素
int front,rear; //队头指针和队尾指针
} SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear=Q.front=0; //初始化时,队头队尾指针指向0
return;
}
//入队
bool EnQueue(SqQueue &Q,int x){
if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
Q.data[Q.rear]=x; //新元素插入队尾
Q.rear=(Q.rear+1)%MaxSize; //队尾指针加1取模
return true;
}
//出队
bool DeQueue(SqQueue &Q,int &x){
if(Q.rear==Q.front) return false; //队空则报错
x=Q.data[Q.front];
Q.front=(Q.front+1)%MaxSize;
return true;
}
int main(){
SqQueue Q; //声明一个顺序队列
InitQueue(Q); //初始化队列
EnQueue(Q,11); //入队
EnQueue(Q,22);
EnQueue(Q,33);
EnQueue(Q,44);
int x=0;
DeQueue(Q,x); //出队
printf("x=%d\n",x);
//打印
printf("%d\n",Q.data[Q.front]);
printf("%d\n",Q.data[Q.front+1]);
printf("%d\n",Q.data[Q.front+2]);
return 0;
}
五、顺序队列获得队头元素的值
//顺序队列获得队头元素的值
#include
#include
#define MaxSize 10 //定义队列中元素的最大个数
typedef struct{
int data[MaxSize]; //静态数组存放队列元素
int front,rear; //队头指针和队尾指针
} SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear=Q.front=0; //初始化时,队头队尾指针指向0
return;
}
//入队
bool EnQueue(SqQueue &Q,int x){
if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
Q.data[Q.rear]=x; //新元素插入队尾
Q.rear=(Q.rear+1)%MaxSize; //队尾指针加1取模
return true;
}
//获得队头元素的值
bool GetHead(SqQueue Q,int &x){
if(Q.rear==Q.front) return false; //队空则报错
x=Q.data[Q.front];
return true;
}
int main(){
SqQueue Q; //声明一个顺序队列
InitQueue(Q); //初始化队列
EnQueue(Q,11); //入队
EnQueue(Q,22);
EnQueue(Q,33);
int x=0;
GetHead(Q,x); //获得队头元素的值
//打印
printf("%d\n",x);
return 0;
}
六、顺序队列元素个数
//顺序队列元素个数
#include
#include
#define MaxSize 10 //定义队列中元素的最大个数
typedef struct{
int data[MaxSize]; //静态数组存放队列元素
int front,rear; //队头指针和队尾指针
} SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear=Q.front=0; //初始化时,队头队尾指针指向0
return;
}
//入队
bool EnQueue(SqQueue &Q,int x){
if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
Q.data[Q.rear]=x; //新元素插入队尾
Q.rear=(Q.rear+1)%MaxSize; //队尾指针加1取模
return true;
}
//队列元素个数
bool QueueLen(SqQueue Q,int &x){
x=(Q.rear+MaxSize-Q.front)%MaxSize; //队列元素个数
return true;
}
int main(){
SqQueue Q; //声明一个顺序队列
InitQueue(Q); //初始化队列
EnQueue(Q,11); //入队
EnQueue(Q,22);
EnQueue(Q,33);
int x=0;
QueueLen(Q,x); //获取队列元素个数
//打印
printf("%d\n",x);
return 0;
}
七、其他情况