/*
用数组实现队列,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;
}