//順序存盤佇列
#include <stdio.h>
#define MaxSize 6
typedef struct{
int data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue *); //初始化佇列
void QueueEmpty(SqQueue); //判斷佇列是否為空
void QueueFull(SqQueue); //判斷佇列是否為滿
void EnQueue(SqQueue * , int); //入隊
int * DeQueue(SqQueue * , int *); //出隊
int * GetHead(SqQueue , int *); //獲取隊頭資料
int main(void){
SqQueue Q;
InitQueue(&Q);
EnQueue(&Q,1);
EnQueue(&Q,2);
EnQueue(&Q,3);
EnQueue(&Q,4);
EnQueue(&Q,5);
EnQueue(&Q,6);
int e = 0;
DeQueue(&Q,&e);
printf("出隊的資料為:%d\n",e);
DeQueue(&Q,&e);
printf("出隊的資料為:%d\n",e);
GetHead(Q,&e);
printf("當前隊頭的資料為:%d\n",e);
return 0;
}
//初始化佇列
void InitQueue(SqQueue *q){
q->front = q->rear = 0;
}
//判斷佇列是否為空
void QueueEmpty(SqQueue q){
if(q.front == q.rear){
printf("佇列為空!\n");
}else{
printf("佇列不為空!\n");
}
}
///判斷佇列是否為滿
void QueueFull(SqQueue q){
if((q.rear+1) % MaxSize == q.front){
printf("佇列已滿!\n");
}else{
printf("佇列未滿!\n");
}
}
//入隊
void EnQueue(SqQueue *q , int e){
if((q->rear+1) % MaxSize == q->front){
printf("佇列已滿!\n");
}else{
q->data[q->rear] = e;
printf("%d入隊\n",e);
q->rear = (q->rear+1) % MaxSize;
}
}
//出隊
int * DeQueue(SqQueue *q , int *e){
if(q->rear == q->front){
printf("佇列為空!\n");
}else{
(*e) = q->data[q->front];
q->front = (q->front + 1) % MaxSize;
}
return e;
}
//獲取隊頭資料
int * GetHead(SqQueue q , int *e){
if(q.front == q.rear){
printf("佇列為空!\n");
}else{
(*e) = q.data[q.front];
}
return e;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75817.html
標籤:其他
上一篇:快速排序python實作總結
