说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

C语言中队列Queue的操作

HTML文档下载 WORD文档下载 PDF文档下载
队列(queue)是一种信息的线性列表,以先进先出的顺序访问。

队列(queue)是一种信息的线性列表,以先进先出的顺序访问。本例中队列的基本操作是由四个函数完成的,它们是置空队列函数SetNull(),判断队列是否为空函数Empty(), 入排操作函数EnQueue(),出排操作函数DelQueue()

 

 

#include <stdio.h>#define Max 100void SetNull(front, rear)int *front, *rear;{	*front = 0;	*rear = 0;}int Empty(front,rear)int *front, *rear;{	if(*front == *rear)		return(1);	else		return(0);}int EnQueue(q,x,front,rear)int q[];int x;int *front,*rear;{	*rear = (*rear+1) % Max;	if(*front == *rear)	{		printf("队列发生上溢\n");		return(-1);	}	else	{		q[*rear] = x;		return(0);	}}int DelQueue(q,y,front,rear)int q[];int *y;int *front,*rear;{	*front = (*front +1)%Max;	if(*front == *rear)	{		printf("队列发生下溢\n");		return(-1);	}	else	{		*y = q[*front];		return(0);	}}void main(){	int q[Max];	int f = 0, r = 0;	/*f和r分别对应队列的头和尾在整个队列存储区域的位置*/	int i,x,m,n;	int a;	SetNull(&f,&r);			/*清空队列*/	printf("要输入队列的字符个数:\n");	scanf("%d",&m);	printf("输入队列的整型数据:\n");	for (i=0; i<m; i++)	{		i=i;		scanf("%d",&x);		a = EnQueue(q,x,&f,&r);		if(a == -1)			break;	}	printf("要提出队列的字符个数:");	scanf("%d",&n);	printf("输出从队列中提取的数据:\n");	for (i = 0; i<n; i++)	{		if(DelQueue(q,&x,&f,&r) == -1)			break;		printf("%d\n",x);	}	if(Empty(&f,&r) == 1)		printf("队列为空");	else		printf("队列中还有%d个数据",(m-n));}	

 

 

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘