栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

循环顺序队列基本操作的具体实现算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

循环顺序队列基本操作的具体实现算法

划重点:

        0.本文队列储存结构为int数组,长度为10,下标0-9.

        1.如何成为循环队列:

                元素入队,rear+1;元素出队,front+1;当rear=9,front>0时,数组的后方没有空间,但数组的前方还有空间,此时元素再入队,执行rear=(rear+1)%MAXqueue,rear=0,使用了数组前方的空间。

        2.本文判断队空队满方法:

                少用一个数据元素空间,即entry[front]不用,当队尾rear只差一步队头  (即 (rear+1)%MAXqueue==front)时认为队满。当front==rear时认为队空。

定义队列
#include
#define MAXqueue 10 //后续会用到
#include
using namespace std;

typedef enum Status { //后续会用到
	success, fail, fatal, range_error,overflow,underflow
}Status;

typedef struct queue{ //定义队列
	int front,rear; //指示队头和队尾位置
	int entry[MAXqueue]; //数据元素储存空间
}Queue,*QueuePtr; //定义为新的数据类型
初始化队列
Status Queue_Init(QueuePtr *q){ //q是二重指针,*q指向队列
	Status outcome = fatal;
	QueuePtr queueptr = (QueuePtr)malloc(sizeof(Queue));
	if(queueptr){
		queueptr->front=-1; 
		queueptr->rear=-1;
		*q = queueptr;
		outcome = success;
	}
	return outcome;
}
销毁队列
void Queue_Destory(QueuePtr *q){
	if(*q){ //*q存在即队列存在
		free(*q);
		*q = NULL;
	}
} 
清空队列
void Queue_Clear(QueuePtr q){
	q->front = q->rear = -1; 
} 
//数据元素存储空间长度为10,下标为0-9,置为-1即回到初始化状态,不需要清空数据存储空间entry[MAXqueue]
队列判空
bool Queue_Empty(QueuePtr q){
	return q->front==q->rear;
} 
队列判满
bool Queue_Full(QueuePtr q){
	return ((q->rear+1)%MAXqueue==q->front);
} 
入队
Status Queue_EnQueue(QueuePtr q,int item){
	Status outcome = overflow;
	if(!Queue_Full(q)){
		q->rear = (q->rear+1)%MAXqueue; //rear后移一位
		q->entry[q->rear]=item;
		outcome = success;
	}
	return outcome;
} 
出队
Status Queue_DeQueue(QueuePtr q,int *item){
	Status outcome = underflow;
	if(!Queue_Empty(q)){
		q->front = (q->front+1)%MAXqueue; //front后移一位
		*item = q->entry[q->front]; //将出队元素放入item中
		outcome = success;
	}
	return outcome; 
} 
求元素个数
int Queue_Size(QueuePtr q){
	return (q->rear-q->front)%MAXqueue;
} 

另:代码出自《数据结构与算法》(北京大学出版社)(主编:林劼,刘震,陈端兵,戴波)(代码稍有改动)

初来乍到,冒犯之处敬请海涵,欢迎大家多多指正。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296854.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号