数组实现队列

it2024-10-01  24

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

转载于:https://www.cnblogs.com/chenwjia/p/6389287.html

最新回复(0)