//循环顺序队列的基本操作
#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
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。