代码实现
Queue.h
typedef int ElemType;
#define MAX_SIZE 10
typedef struct Queue
{
ElemType arr[MAX_SIZE];
int front;
int rear;
}Queue,*pQueue;
void init(pQueue pqu);
int full(pQueue pqu);
int enqueue(pQueue pqu, ElemType val);
int empty(pQueue pqu);
int dequeue(pQueue pqu);
int front(pQueue pqu);
int back(pQueue pqu);
Queue.cpp
#include<stdio.h>
#include"Queue.h"
void init(pQueue pqu)
{
if (pqu != NULL)
{
pqu->front = pqu->rear = 0;
}
}
int full(pQueue pqu)
{
return (pqu->rear + 1) % MAX_SIZE == pqu->front;
}
int enqueue(pQueue pqu, ElemType val)
{
if (full(pqu))
{
return 0;
}
pqu->arr[pqu->rear] = val;
pqu->rear = (pqu->rear + 1) % MAX_SIZE;
return 1;
}
int empty(pQueue pqu)
{
return pqu->front == pqu->rear ? 1 : 0;
}
int dequeue(pQueue pqu)
{
if (empty(pqu))
{
return 0;
}
pqu->front = (pqu->front + 1) % MAX_SIZE;
return 1;
}
int front(pQueue pqu)
{
if (empty(pqu))
{
return 0;
}
return pqu->arr[pqu->front];
}
int back(pQueue pqu)
{
if (empty(pqu))
{
return 0;
}
return pqu->arr[(pqu->rear + MAX_SIZE - 1) % MAX_SIZE];
}
main.cpp
#include<stdio.h>
#include"Queue.h"
int main()
{
Queue qu;
init(&qu);
enqueue(&qu, 3);
enqueue(&qu, 7);
enqueue(&qu, 6);
enqueue(&qu, 4);
enqueue(&qu, 2);
int refront = front(&qu);
printf("fr:%d\n", refront);
int reback = back(&qu);
printf("re:%d\n", reback);
dequeue(&qu);
refront = front(&qu);
printf("fr:%d\n", refront);
reback = back(&qu);
printf("re:%d\n", reback);
return 0;
}