3.30假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。试给出此循环队列的队满条件,并写出相应的入队列和出队列的算法(在出队列的算法中要返回队头

#include<stdio.h>
#include <stdlib.h>	
#define MaxQSize	7
typedef int ElemType;
typedef struct{
	ElemType *base;
	int rear;
	int length;
}Queue;

Queue InitQueue(){
	Queue Q;
	Q.base=(ElemType*)malloc(MaxQSize*sizeof(ElemType));
	Q.rear=0;
	Q.length=0;
	return Q;
}

void EnQueue(Queue &Q,ElemType x){
	if(Q.length==MaxQSize){                     
		printf("队满"); 
		exit(0);
	} 
	Q.base[Q.rear]=x;
	Q.rear=(Q.rear+1)%MaxQSize;
	Q.length++;
}

ElemType DeQueue(Queue &Q){
	ElemType x;
	if(Q.length==0) {                                  
		printf("队空");
		exit(0);
	}
	x=Q.base[(Q.rear+MaxQSize-Q.length+1)%MaxQSize];
	Q.length--;
	return x;
}

int main(){
	Queue Q=InitQueue();
	
	char c[20];
	int i,j;
	printf("输入字符:\n");
	scanf("%s",c);
	for(i=0;c[i]!='\0';i++){
		EnQueue(Q,c[i]);
	}
	
	printf("%c ",DeQueue(Q));
	printf("%c ",DeQueue(Q));
	printf("%c ",DeQueue(Q));
	printf("%c ",DeQueue(Q));
	return 0; 
	
}

调试:

输入字符:
acbdefg
a c b d
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值