#include using std::cout; using std::endl; struct Queue { Queue *next; int data; }; Queue* queue_new(int data) { Queue *q = new Queue; q->data = data; q->next = NULL; return q; } void queue_put(Queue* q, int data) { Queue* p = queue_new(data); Queue* cur = q; while(cur->next) { cur = cur->next; } cur->next = p; } Queue* queue_pop(Queue* q, int& data) { data = q->data; return q->next; } int main(void) { Queue *q = queue_new(1); queue_put(q, 2); queue_put(q, 3); cout << q->data << " " << q->next->data << " " << q->next->next->data << endl; int data; q = queue_pop(q, data); cout << data << endl; q = queue_pop(q, data); cout << data << endl; q = queue_pop(q, data); cout << data << endl; return 0; }