#include #include typedef struct Node node; struct Node { int id; struct Node *next; }; typedef struct Queue queue; struct Queue { node *head; node *tail; }; int peek(queue *q) { return q->head->id; } void insert(queue *q, int id) { node *new = malloc(sizeof(node)); new->id = id; new->next = NULL; if (q->tail) q->tail->next = new; else q->head = new; q->tail = new; } void delete (queue *q) { if (!q->head) return; node *next = q->head->next; free(q->head); q->head = next; if (!q->head) q->tail = NULL; } void display(queue *q) { node *cur = q->head; while (cur != NULL) { printf("%d ", cur->id); cur = cur->next; } printf("\n"); } int main() { queue *q = malloc(sizeof(queue)); insert(q, 56); insert(q, 3); insert(q, 99); delete(q); display(q); // free while (q->head != NULL) delete(q); free(q); }