#include <stdio.h>
#include <stdlib.h>
#define size 6
int fill = 0;
struct q* BACK;
struct q* FRONT;
struct q* temp_back;
struct q
{
int data;
struct q* next;
struct q* previous;
};
struct q* generateQueue()
{
int count = 0;
BACK
= (struct q
*)malloc(sizeof(struct q
)); BACK->previous = NULL;
struct q* initial;
initial = BACK;
while(count<size)
{
struct q*temp;
temp
= (struct q
*)malloc(sizeof(struct q
)); temp->previous = initial;
initial->next = temp;
initial = temp;
count++;
}
FRONT = initial;
FRONT->next = NULL;
}
void enqueue(int input)
{
struct q* temp = BACK;
int count = 0;
if(size - fill >0)
{
while(count<(size - fill))
{
temp = temp->next;
count++;
}
temp->data = input;
}
fill++;
}
void dequeue()
{
struct q* temp = FRONT;
int count = 0;
while(count<fill-1)
{
struct q* temp_prev;
temp_prev = temp->previous;
(temp->data) = (temp_prev)->data;
temp = temp_prev;
count++;
}
temp_back = temp;
fill--;
}
void peek()
{
printf("This is the data in front of the q: %d\n", FRONT
->data
); }
void printQueue()
{
struct q* initial = FRONT;
while(initial!=temp_back)
{
printf("%d\n", initial
->data
); initial = initial->previous;
}
}
int main(void)
{
generateQueue();
int count = size;
temp_back = BACK;
while (count>0)
{
int input;
enqueue(input);
count--;
}
printQueue();
peek();
dequeue();
printf("Queue after dequeuing\n"); printQueue();
peek();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBzaXplIDYKaW50IGZpbGwgPSAwOwpzdHJ1Y3QgcSogQkFDSzsKc3RydWN0IHEqIEZST05UOwpzdHJ1Y3QgcSogdGVtcF9iYWNrOwpzdHJ1Y3QgcQogICAgewogICAgICAgIGludCBkYXRhOwogICAgICAgIHN0cnVjdCBxKiBuZXh0OwogICAgICAgIHN0cnVjdCBxKiBwcmV2aW91czsKICAgIH07CgpzdHJ1Y3QgcSogZ2VuZXJhdGVRdWV1ZSgpCnsKICAgIGludCBjb3VudCA9IDA7CiAgICBCQUNLID0gKHN0cnVjdCBxKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBxKSk7CiAgICBCQUNLLT5wcmV2aW91cyA9IE5VTEw7CiAgICBzdHJ1Y3QgcSogaW5pdGlhbDsKICAgIGluaXRpYWwgPSBCQUNLOwogICAgd2hpbGUoY291bnQ8c2l6ZSkKICAgIHsKICAgICAgICBzdHJ1Y3QgcSp0ZW1wOwogICAgICAgIHRlbXAgPSAoc3RydWN0IHEqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHEpKTsKICAgICAgICB0ZW1wLT5wcmV2aW91cyA9IGluaXRpYWw7CiAgICAgICAgaW5pdGlhbC0+bmV4dCA9IHRlbXA7CiAgICAgICAgaW5pdGlhbCA9IHRlbXA7CiAgICAgICAgY291bnQrKzsKICAgIH0KICAgIEZST05UID0gaW5pdGlhbDsKICAgIEZST05ULT5uZXh0ID0gTlVMTDsKfQoKdm9pZCBlbnF1ZXVlKGludCBpbnB1dCkKewogICAgc3RydWN0IHEqIHRlbXAgPSBCQUNLOwogICAgaW50IGNvdW50ID0gMDsKICAgIGlmKHNpemUgLSBmaWxsID4wKQogICAgewogICAgICAgIHdoaWxlKGNvdW50PChzaXplIC0gZmlsbCkpCiAgICAgICAgewogICAgICAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgICAgICAgICAgY291bnQrKzsKICAgICAgICB9CiAgICAgICAgdGVtcC0+ZGF0YSA9IGlucHV0OwogICAgfSAgICAKICAgIGZpbGwrKzsKfQoKdm9pZCBkZXF1ZXVlKCkKewogICAgc3RydWN0IHEqIHRlbXAgPSBGUk9OVDsKICAgIGludCBjb3VudCA9IDA7CiAgICB3aGlsZShjb3VudDxmaWxsLTEpCiAgICB7CiAgICAgICAgc3RydWN0IHEqIHRlbXBfcHJldjsKICAgICAgICB0ZW1wX3ByZXYgPSB0ZW1wLT5wcmV2aW91czsKICAgICAgICAodGVtcC0+ZGF0YSkgPSAodGVtcF9wcmV2KS0+ZGF0YTsKICAgICAgICB0ZW1wID0gdGVtcF9wcmV2OwogICAgICAgIGNvdW50Kys7CiAgICB9CiAgICB0ZW1wX2JhY2sgPSB0ZW1wOwogICAgZmlsbC0tOwp9Cgp2b2lkIHBlZWsoKQp7CiAgICBwcmludGYoIlRoaXMgaXMgdGhlIGRhdGEgaW4gZnJvbnQgb2YgdGhlIHE6ICVkXG4iLCBGUk9OVC0+ZGF0YSk7Cn0KCnZvaWQgcHJpbnRRdWV1ZSgpCnsKICAgIHN0cnVjdCBxKiBpbml0aWFsID0gRlJPTlQ7CiAgICB3aGlsZShpbml0aWFsIT10ZW1wX2JhY2spCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZFxuIiwgaW5pdGlhbC0+ZGF0YSk7CiAgICAgICAgaW5pdGlhbCA9IGluaXRpYWwtPnByZXZpb3VzOwogICAgfQp9CmludCBtYWluKHZvaWQpCnsKICAgIGdlbmVyYXRlUXVldWUoKTsKICAgIGludCBjb3VudCA9IHNpemU7CiAgICB0ZW1wX2JhY2sgPSBCQUNLOwogICAgd2hpbGUgKGNvdW50PjApCiAgICB7CiAgICAgICAgaW50IGlucHV0OwogICAgICAgIHNjYW5mKCIlZCIsICZpbnB1dCk7CiAgICAgICAgZW5xdWV1ZShpbnB1dCk7CiAgICAgICAgY291bnQtLTsKICAgIH0KICAgIHByaW50UXVldWUoKTsKICAgIHBlZWsoKTsKICAgIGRlcXVldWUoKTsKICAgIHByaW50ZigiUXVldWUgYWZ0ZXIgZGVxdWV1aW5nXG4iKTsKICAgIHByaW50UXVldWUoKTsKICAgIHBlZWsoKTsKICAgIHJldHVybiAwOwp9