数据结构-循环顺序队列的基本操作

发布时间:2020-07-29 11:39:17 作者:toceph
来源:网络 阅读:427
//循环顺序队列的基本操作

#include <iostream>
#include <string.h>
using namespace std;

#define MAXLEN 8
#define datatype char
#define Status int
typedef struct{
	datatype s[MAXLEN];
	int front;				//记录队首的指针
	int rear;				//记录队尾的指针
}SeqQueue;

//初始化
Status InitSeqQueue(SeqQueue &sq)
{
	sq.front=-1;			
	sq.rear=-1;
	return 1;
}
//判空
Status IsEmpty(SeqQueue sq)
{	//若空,返回1;否则返回0
	if(sq.front==sq.rear) return 1;
	else return 0;
}
//判满
Status IsFull(SeqQueue sq)
{	//若队满,返回1;
	if(sq.front==(sq.rear+1)%MAXLEN) return 1;
	else return 0;
}
//入栈
Status InQueue(SeqQueue &sq,datatype x)
{
	//判断队列满
	if(sq.front==(sq.rear+1)%MAXLEN) return 0;
	
	sq.rear++;
	sq.s[sq.rear]=x;
	
	return 1;
}
//出栈
Status OutQueue(SeqQueue &sq,datatype &x)
{	//若对空,返回0;出队成功返回1;
	//判断对空
	if(sq.front==sq.rear) return 0;
	//出队
	sq.front++;
	x=sq.s[sq.front];
	return 1;
}
//显示栈元素
Status ShowQueue(SeqQueue &sq)
{
	if(sq.front==sq.rear) return 0;
	int i=sq.front;
	while(i!=sq.rear)
	{
		i++;
		cout<<sq.s[i]<<" ";

	}
	cout<<endl;
	return 1;
}
//读栈首元素
Status ReadQueue(SeqQueue &sq,datatype &x)
{
	if(IsEmpty(sq)) return 0;	//若队列空,返回0
	sq.front++;
	x=sq.s[sq.front];
	return 1;
}

//求队列长度


int main()
{
	cout<<"队列初始化"<<endl;
	SeqQueue SQ;
	InitSeqQueue(SQ);

	cout<<"入队"<<endl;
	InQueue(SQ,'a');
	InQueue(SQ,'b');
	InQueue(SQ,'c');

	cout<<"显示队列元素:"<<endl;
	ShowQueue(SQ);

	datatype x;
	cout<<"出队:"<<endl;
	OutQueue(SQ,x);

	cout<<"显示队列元素:"<<endl;
	ShowQueue(SQ);

	cout<<"读取队首元素:"<<endl;
	ReadQueue(SQ,x);
	cout<<x<<endl;
	return 0;
}

----------------------------------------------------------
输出结果:
队列初始化
入队
显示队列元素:
a b c
出队:
显示队列元素:
b c
读取队首元素:
b
Press any key to continue . . .


鲜少伟

2016-4-18

推荐阅读:
  1. 数据结构(六)——循环链表
  2. 循环队列的初始化、入队、出队等基本操作

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据结构 队列 循环队列

上一篇:tableciewCell 样式

下一篇:如何实现JS图片压缩

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》