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

循环队列简单明了版本

    • 原题描述
    • 简要分析
    • 数据定义
    • 可AC代码
    • 运行结果

原题描述

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

简要分析

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

数据定义

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

可AC代码

#include
#include 
#include 

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());
}

运行结果

T3:循环数组实现队列(C++编写、可AC版本)_第1张图片

你可能感兴趣的:(日常学习数据结构,c++,c语言,开发语言)