T3:循环数组实现队列(C++编写、可AC版本)

原题描述

请给出循环数组实现队列所需的必要数据的定义,并使用循环数组实现队列的六个功能函数。

简要分析

出这个题目,命题人无非是想考查大家都循环数组实现的循环队列的判空、判满等的处理。

数据定义

typedef struct Queue
{
    int *data;
    int front;
    int rear;
    int capacity;
}queue;

可AC代码

#include<stdio.h>
#include <malloc.h>
#include <stdlib.h>

static int const MAX=256;
static int* data;

typedef struct Queue
{
    int *data;
    int front;
    int rear;
    int capacity;
}queue;

queue q;

void ini(){
	q.capacity=MAX;
	q.data=(int*)malloc(sizeof(int)*(q.capacity+1));
	q.front=q.rear=0;
}

int size(){
	return (q.rear-q.front+q.capacity) % q.capacity;
}

bool full(){
	 if((q.rear + 1)%(q.capacity) == q.front) 
	 	return true;
	 return false;
}

bool empty(){
	if(q.front==q.rear)
		return true;
	return false;
}

int front(){
	return q.data[q.front];
}

void push(int v){
	if(full())
		exit(-1);
	q.data[q.rear]=v;
	q.rear=(q.rear+1) % q.capacity;
}

void pop(){
	if(empty())
		exit(-1);
	q.front=(q.front+1) % q.capacity;
}

int main(){
	ini();
	push(6);
	push(7);
	push(8);
	printf("队列元素个数为:%d\n",size());
	printf("队列队头元素为:%d\n",front());
	printf("-------现在出队一个元素-------\n");
	pop();
	printf("队列元素个数为:%d\n",size());
	printf("队列队头元素为:%d\n",front());
}

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只天蝎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值