【循环队列的入队/出队-顺序存储】

循环队列的入队/出队-顺序存储

1.入队函数

int cir_ins_queue(char x)          //将x入队
{
	if((tail+1)%MAXN==head){       //队满返回1
		return (1);
	}
	else
	{
		tail=(tail+1)%MAXN;
		queue[tail]=x;
		return (0);                //插入成功返回0  
	}
}

2.出队函数

int cir_del_queue(char *x)     //将出队元素存放到指针x所指位置并返回
{
	if(tail==head)             //队空,返回1
		return (1);
	else{
		head=(head+1)%MAXN;
		*x=queue[head];
		return (0);            //出队成功返回0
	}
}

3.整体程序

#include<stdio.h>
#include<stdlib.h>
#define MAXN 4
int head=0,tail=0;
char queue[MAXN];


int cir_ins_queue(char x)          //入队
{
	if((tail+1)%MAXN==head){       //队满返回1
		return (1);
	}
	else
	{
		tail=(tail+1)%MAXN;
		queue[tail]=x;
		return (0);                //插入成功返回0  
	}
}


int cir_del_queue(char *x)         //出队
{
	if(tail==head)
		return (1);
	else{
		head=(head+1)%MAXN;
		*x=queue[head];
		return (0);
	}
}


int main(){
    int m,i,j,p,q,k;
	char one='A',two='B',three='C',four='D';
	char *x;
	x=(char*)malloc(sizeof(char));
	m=cir_ins_queue(one);
	if(m==0){
	printf("入队成功!\n");
	}else{
		printf("入队失败!\n");
	}
	i=cir_ins_queue(two);
	if(i==0){
	printf("入队成功!\n");
	}else{
		printf("入队失败!\n");
	}
	j=cir_ins_queue(three);
	if(j==0){
	printf("入队成功!\n");
	}else{
		printf("入队失败!\n");
	}
	p = cir_ins_queue(four);      //队满
	if (p == 0) {
		printf("入队成功!\n");
	}
	else {
		printf("入队失败!\n");
	}
    k=cir_del_queue(x);
	if(k==0){
		printf("出队元素为:%c\n",*x);
	}else{
		printf("出队失败!\n");
	}
		printf("链表的元素是:");
	for(q=head;q<=tail;q++){
		printf("%5c",queue[q]);
	}
}

4.运行结果

在这里插入图片描述

注意事项:

1.head,tail,queue需要定义为全局变量,以便于值的修改

2.出队操作中的x使用前需要动态申请空间,否则无法存放出队元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值