Data Structures and Algorithms Analysis Exercise p64 queue
#include<stdio.h>
#include<stdlib.h>
typedef struct queuerecord{
int capacity;
int front;
int rear;
int *array;
int size;
}*queue;
void makeempty(queue q) {
q->front = 1;
q->rear = 0;
q->size = 0;
}
queue createqueue(int maxelements) {
queue q = (queue)malloc(sizeof(struct queuerecord));
q->array = (int*)malloc(sizeof(int)*maxelements);
q->capacity = maxelements;
makeempty(q);
return q;
}
int isfull(queue q) {
return q->size == q -> capacity;
}
int isempty(queue q) {
return q->size == 0;
}
void dispose(queue q) {
free(q->array);
free(q);
}
int circ(int value,queue q) {
value++;
if (value== q->capacity) {
value= 0;
}
return value;
}
void enqueue(int x, queue q) {
if (isfull(q)) {
printf("full queue");
}
else {
q->size++;
q->rear = circ(q->rear,q);
q->array[q->rear] = x;
}
}
void dequeue(queue q) {
if (isempty(q)) {
printf("empty queue");
}
else {
q->size--;
q->front = circ(q->front, q);
}
}
int main() {
queue q=createqueue(20);
int a;
for (int i = 0; i < 10; i++) {
scanf("%d", &a);
enqueue(a, q);
}
for (int i = 0; i < 5; i++) {
dequeue(q);
}
for (int i = q->front; i <= q->rear; i++) {
printf("%d",q->array[i]);
}
return 0;
}