#include <stdio.h>
#include <stdlib.h>
#define QUEUE_SIZE 10
typedef struct {
int data[QUEUE_SIZE];
int number;
int head;
} QUEUE;
QUEUE* create_queue() {
QUEUE
* queue
= (QUEUE
*)malloc(sizeof(QUEUE
));
queue->head = 0;
queue->number = 0;
return queue;
}
int enqueue(QUEUE* queue, int value) {
if (queue->head + queue->number < QUEUE_SIZE){
queue->data[queue->head + queue->number] = value;
queue->number++;
return 0;
} else {
return -1;
}
}
int dequeue(QUEUE* queue) {
int r;
if (queue->number > 0) {
r = queue->data[queue->head];
queue->head++;
queue->number--;
} else {
r = -1;
}
return r;
}
int main() {
QUEUE *q = create_queue();
enqueue(q, 3);
enqueue(q, 2);
enqueue(q, 1);
enqueue(q, 5);
enqueue(q, 4);
return 0;
}
/* end */
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgUVVFVUVfU0laRSAxMAoKdHlwZWRlZiBzdHJ1Y3QgewogIGludCBkYXRhW1FVRVVFX1NJWkVdOwogIGludCBudW1iZXI7CiAgaW50IGhlYWQ7Cn0gUVVFVUU7CgpRVUVVRSogY3JlYXRlX3F1ZXVlKCkgewogIFFVRVVFKiBxdWV1ZSA9IChRVUVVRSopbWFsbG9jKHNpemVvZihRVUVVRSkpOwogIAogIHF1ZXVlLT5oZWFkID0gMDsKICBxdWV1ZS0+bnVtYmVyID0gMDsKICByZXR1cm4gcXVldWU7Cn0KCmludCBlbnF1ZXVlKFFVRVVFKiBxdWV1ZSwgaW50IHZhbHVlKSB7CiAgaWYgKHF1ZXVlLT5oZWFkICsgcXVldWUtPm51bWJlciA8IFFVRVVFX1NJWkUpewogICAgcXVldWUtPmRhdGFbcXVldWUtPmhlYWQgKyBxdWV1ZS0+bnVtYmVyXSA9IHZhbHVlOwogICAgcXVldWUtPm51bWJlcisrOwogICAgcmV0dXJuIDA7CiAgfSBlbHNlIHsgCiAgICByZXR1cm4gLTE7CiAgfQp9CgppbnQgZGVxdWV1ZShRVUVVRSogcXVldWUpIHsKICBpbnQgcjsKICBpZiAocXVldWUtPm51bWJlciA+IDApIHsKICAgIHIgPSBxdWV1ZS0+ZGF0YVtxdWV1ZS0+aGVhZF07CiAgICBxdWV1ZS0+aGVhZCsrOwogICAgcXVldWUtPm51bWJlci0tOwogIH0gZWxzZSB7CiAgICByID0gLTE7CiAgfQogIHJldHVybiByOwp9CgppbnQgbWFpbigpIHsKICBRVUVVRSAqcSA9IGNyZWF0ZV9xdWV1ZSgpOwogIGVucXVldWUocSwgMyk7CiAgZW5xdWV1ZShxLCAyKTsKICBlbnF1ZXVlKHEsIDEpOwogIHByaW50ZigiOiVkXG4iLCBkZXF1ZXVlKHEpKTsKICBwcmludGYoIjolZFxuIiwgZGVxdWV1ZShxKSk7CiAgZW5xdWV1ZShxLCA1KTsKICBlbnF1ZXVlKHEsIDQpOwogIHByaW50ZigiOiVkXG4iLCBkZXF1ZXVlKHEpKTsKICBwcmludGYoIjolZFxuIiwgZGVxdWV1ZShxKSk7CiAgcHJpbnRmKCI6JWRcbiIsIGRlcXVldWUocSkpOwogIHByaW50ZigiOiVkXG4iLCBkZXF1ZXVlKHEpKTsKICBmcmVlKHEpOwogIHJldHVybiAwOwp9Ci8qIGVuZCAqLwoK