C++入门模拟队列

#include"stdio.h"
#define M 5 
struct dl{
    
    
	int a[M],front,rear;//队列  头  尾 
}d;

void rd(struct dl *d);
void cd(struct dl *d);
void out(struct dl *d);

void main()
{
    
    
	int gn,js=0;
	d.front=d.rear=0;
	
	for(;js!=1;)
	{
    
    
		printf("1 入队\n");
		printf("2 出对\n");
		printf("3 打印队\n");
		printf("0 退出\n");
		printf("功能:");
		scanf("%d",&gn);
		switch(gn)
		{
    
    
			case 1:
				rd(&d);
				printf("\n\n");
			break;
			case 2:
				cd(&d);
				printf("\n\n");
			break;
			case 3:
				out(&d);
				printf("\n\n");
			break;
			case 0:
				
			break;
		}
	} 
}
void rd(struct dl *d)
{
    
    
	if(d->rear==M)//因为下标时 0 开始所以最大的下标输完之后下标的变量是 M 
	{
    
    
		printf("队满!!!\n");
	} 
	else
	{
    
    
		printf("入队元素:");
		scanf("%d",&d->a[d->rear]);
		d->rear++;
	}
}
void cd(struct dl *d)
{
    
    
	if(d->front==d->rear)
	{
    
    
		printf("队空!!!\n");
	} 
	else
	{
    
    
		printf("出队元素是%d\n",d->a[d->front]);
		d->front++;
		printf("出队成功!!\n");
	}
}
void out(struct dl *d)
{
    
    
	int j;
	printf("从对头到队尾的元素为:\n");
	for(j=d->front;j<d->rear;j++)
	{
    
    
		printf("%d\t",d->a[j]);
	}
	printf("\n");
}

猜你喜欢

转载自blog.csdn.net/dudadudadd/article/details/112556254