#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;
}