#include <stdio.h> #include <stdlib.h> #ifndef __cplusplus #include <stdbool.h> /*包含bool、true*/ #endif //__cplusplus typedef char ElemType; typedef struct Queue{ ElemType data; struct Queue *next; }Queue,*pQueue; /************************************************/ pQueue CreateQueue(void); bool isEmpty(pQueue Q); void Push(pQueue *Q,ElemType a); void Pop(pQueue Q); ElemType Top(pQueue Q); /***********************************************/ pQueue CreateQueue(void) { pQueue p=(pQueue)malloc(sizeof(Queue)); p->next=NULL; return p; } bool isEmpty(pQueue Q) { if(Q->next==NULL) return true; else return false; } void Push(pQueue *Q,ElemType a) { pQueue p=(pQueue)malloc(sizeof(Queue)); if(!p) { printf("内存分配失败!\n"); return; } p->data=a; p->next=NULL; (*Q)->next=p; (*Q)=p; } void Pop(pQueue Q) { pQueue p ; if(isEmpty(Q)) { printf("空队列!\n"); return; } else { p=Q->next; Q->next=Q->next->next; free(p); } } ElemType Top(pQueue Q) { return Q->next->data; } int main(int argc, char *argv[]) { pQueue begin; char c; pQueue Q=CreateQueue(); begin=Q; while((c=getc(stdin))!='\n') Push(&Q,c); while(!isEmpty(begin)) { printf("%c\n",Top(begin)); Pop(begin); } system("pause"); return 0; }