#include<stdio.h>
#include<stdlib.h>
struct node
{
	int data;
	node *next;
};
struct queue
{
	node *head;
	node *tail;
}q;

void in()
{
	int n,a,i;
	scanf("%d",&n);
	printf("请输入要入队的数:\n");
	for(i = 1;i <= n;i ++)
	{
		node *p = (node *)malloc(sizeof(node));
		scanf("%d",&a);
		p->data = a;
		p->next = NULL;
		q.tail->next=p;
		q.tail=p;
	}
}
void out()
{
	printf("请输入要出队的个数:\n");
	int n,i;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		node *p;
		p=q.head->next;
		if(p!=NULL)
		{
			printf("出队数据为:%d\n",p->data);
			q.head=p;
		}
		else
			printf("队内数据已全部出队");
	}
	printf("\n");
	printf("出队成功\n");
}
void print()
{
	node *p;
	p=q.head->next;
	printf("队列数据如下:\n");
	if(p==NULL)
		printf("队列已空。");
	else
	{
		while(p!=NULL)
		{
			printf("%d ",p->data);
			p=p->next;
		} 
	} 
	printf("\n"); 
}
int main()
{
	int n;
	node *p=(node *)malloc(sizeof(node));
	q.head = q.tail = (node *)malloc(sizeof(node));
	q.head->next=NULL;
	printf("请输入入队的个数:\n");
	in();
	while(1)
	{	
		printf("请输入想进行的操作:\n");
		printf("1、入队\n2、出队\n3、查看队列\n4、退出\n");
		scanf("%d",&n);
		if(n==1)
		{
			printf("请输入入队的个数:\n");	
			in();
		}
		else if(n==2)
			out();
		else if(n==3)
		{
			print();
		} 
		else
			break;
	}
	return 0;
}