/*
     用数组实现队列,front指向对头,rear指向队尾。初始时  front等于rear等于0
     进队发生在队尾,然后rear+1;
     出队发生在对头,然后front+1;
    
     front                                   rear  
       a    b  c  d   e   f    g   h  i   j    k
    
     如上所示,若要进行进队操作,插入 l  
     front                                          rear  
       a    b  c  d   e   f    g   h  i   j    k     l
       
     若要出队操作
           front                                          rear  
       a    b     c     d   e   f    g   h  i   j    k     l
    把 a 进行输出,然后将front+1,指向了 b 位置。
    因为是用数组实现,所以不能对单独对 a 进行释放操作,但我们可以将front+1
    再把该队列忽略掉 a ,这只是人为忽略,但a还是存在。这样我们就可以队列看出
          front                                          rear  
            b     c     d   e   f    g   h  i   j    k     l
      
    
*/
#include<stdio.h>
#include<stdlib.h>
int input(int *,int len);//入队
void output(int *,int len); //出队

//实现这两个函数
int input(int *p,int len)
{
   //len为数组的长度
   int num=0;//用于接收多少个数字
   int num2=0;
   //int front=0;//队头
   int rear=0;//队尾
   printf("请问您要输入多少个数字:\n");
   scanf("%d",&num);
   while(num<0||num>len)
   {
         system("cls");
         printf("你输入的数量不符合,在0-%d内,请重新输入:",len);
         scanf("%d",&num);
   }
   for(rear;rear<num;rear++)
   {
          system("cls");
          printf("您要输入的数字:");
          scanf("%d",&num2);
          p[rear]=num2;     
   }
   if(rear==num)
   {
          system("cls");
       printf("输入完成\n");
       printf("一共输入了第%d个数:\n",rear);    
   }
   return num;
}
void output(int *p,int len)
{
    int front=0;//队头
    int num=1;//用于循环,并且和len比较
    for(num;num<=len;num++)
    {
        //system("cls");
        printf("出队列的是:%d\n",p[front]);//出队
        front++;    
    }
}
int main()
{
    int n1=0;//用于接收input函数的返回值
    int data[10];
    n1=input(data,10);
    output(data,n1);
    //delete data;
    //system("cls");
    n1=input(data,10);
    output(data,n1);
    return 0;
 }