我的实现:
#include <stdio.h>
typedef struct Queue {
#define MAX_SIZE 10
char queue[MAX_SIZE];
int head;
int rear;
void(*inQueue)(struct Queue* pQ, char data);
char(*outQueue)(struct Queue* pQ);
}Queue;
Queue newQueue(Queue* pQ);
void inQueue(Queue* pQ, char data);
char outQueue(Queue* pQ);
int main() {
int i = 1;
Queue q1 = newQueue(&q1);
while(i++) {
q1.inQueue(&q1, i);
if (q1.outQueue(&q1) == -1) {
break;
}
}
while (1);
return 0;
}
Queue newQueue(Queue* pQ) {
pQ->head = pQ->rear = 0;
pQ->inQueue = inQueue;
pQ->outQueue = outQueue;
}
void inQueue(Queue* pQ,char data) {
if (pQ->rear == MAX_SIZE - 1) {
printf("满队列!\n");
}
else {
pQ->queue[pQ->rear++] = data;
}
}
char outQueue(Queue* pQ) {
char ret = pQ->queue[pQ->head];
if (pQ->head == MAX_SIZE - 1) {//到队尾了
printf("出队完毕!\n");
return -1;
}
pQ->head++;
printf("out obj is:%d\n", ret);
printf("head is:%d,rear is:%d\n", pQ->head, pQ->rear);
printf("==============================================\n");
return ret;
}
输出情况: