描述
输入若干个整数(小于50个),整数共有四种类型,不同类型的整数代表不同操作。说明如下:
1、[10,99]之间的整数:将该整数入队。
2、-1: 队首整数出队。
3、-2: 显示队列所有整数。
4、-3: 输入结束。
说明:采用链队列实现,必须有队列初始化函数、入队函数、出队函数。
输入
第一行若干整数(必须满足上述四种类型要求),以-3结束。
输出
输出队列中所有整数。
样例输入
13 25 90 -1 12 -2 -1 45 78 30 -2 -3
样例输出
25 90 12 90 12 45 78 30
#include <iostream> using namespace std; typedef int ElemType; typedef struct Lnode{ ElemType data; struct Lnode * next; }Lnode; typedef struct{ Lnode *front,*rear; }LinkQueue; void init(LinkQueue &q){ q.front = q.rear = new Lnode; q.front -> next = NULL; } void push(LinkQueue &q,ElemType e){ Lnode *s = new Lnode; s->data=e; s->next=NULL; q.rear->next=s; q.rear=s; } void pop(LinkQueue &q){ Lnode *p = q.front->next; q.front->next = p->next; if(q.rear==p) q.rear=q.front; delete(p); } ElemType front(LinkQueue q){ return q.front->next->data; } int size(LinkQueue q){ int cnt = 0; Lnode *p = q.front->next; while(p){ cnt++; p = p->next; } return cnt; } void display(LinkQueue q){ Lnode *p = q.front->next; while(p){ cout << p->data<< " "; p = p->next; } cout << endl; } int main(){ LinkQueue q; int x; init(q); while(1){ cin>>x; if(x==-3) break; if(x==-1) pop(q); else if(x==-2) display(q); else if(x>=10&&x<=99) push(q,x); } }