
typedef struct element_s{
struct element_s *next;
void *data;
}element_t;
typedef struct queue_s{
struct element_s *tail;
}queue_t;
queue_t* init_queue(){
queue_t *queue = (queue_t*)malloc(sizeof(queue_t));
element_t* head = (element_t*)malloc(sizeof(element_t));
head->next = head;
queue->tail = head;
return queue;
}
void push(queue_t *q , void *data){
element_t* node = (element_t*)malloc(sizeof(element_t));
node->data = data;
node->next = q->tail->next;
q->tail->next = node;
q->tail = node;
}
#include<stdio.h>
int main()
{
queue_t* q=init_queue();
push(q , (void*)1);
push(q , (void*)2);
for(element_t* node=q->tail->next->next;node!=q->tail->next;node=node->next){
printf("%d\n",(int)(node->data));
}
return 0;
}