#include <stdio.h>#include <stdlib.h>#define ERROR 0#define OK 1typedef int Status ;typedef int ElemType;typedef struct Lnode{ ElemType data; Lnode* next;}Lnode, *Link;typedef struct queue{ Link head; Link tail; int len;} queue;Status Init(queue &qq){ qq.head = (Link)malloc(sizeof(Lnode)); if (qq.head == NULL) return ERROR; qq.tail = qq.head; qq.head -> next = NULL; qq.len = 0; return OK;}Status GetTop(queue &qq, ElemType &e){ if (qq.head == qq.tail) return ERROR; e = qq.head->next->data; return OK;}Status Enqueue(queue &qq, ElemType e){ Link temp; temp = (Link)malloc(sizeof (Lnode)); if (temp == NULL) return ERROR; temp->data = e; qq.tail -> next = temp; qq.tail = temp; qq.len++; qq.tail -> next = NULL; return OK;}Status Dequeue(queue &qq, ElemType &e){ if (qq.head == qq.tail) return ERROR; e = qq.head -> next -> data; Link p = qq.head -> next; free(p); p = NULL; qq.head -> next = qq.head ->next ->next; if (qq.head -> next == NULL) //出隊列時,最後一個元素出隊列後的特殊情況,尾結點指標要指向 第一個結點 qq.tail = qq.head; return OK;}Status Destroyqueue(queue &qq){ Link q, tmp; q = qq.head -> next; free(qq.head); qq.head = NULL; while(q != NULL) { tmp = q -> next; free(q); q = tmp; } tmp = NULL; return OK;}int main(){ queue qq; int m, i; Init(qq); printf("how many nums?\n"); scanf("%d", &m); for (i = 0; i < m; i++) { int e; scanf("%d", &e); Enqueue(qq, e); } int d; GetTop(qq, d); printf("%d\n", d); for(i = 0; i < m; i++) { int e; Dequeue(qq, e); printf("%d ", e); } printf("\n"); system ("pause"); return 0;}