队列的基本操作:
队列的声明
#include "iostream"
using namespace std;
//队列的声明
#define Maxsize 10
typedef int Elemtype;
typedef struct{
Elemtype data[Maxsize]; //用静态数组存放队列元素
int front,rear; //队头指针和队尾指针
int size;
}SqQueue;
初始化队列
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear = Q.front = 0;
Q.size = 0;
}
判断为空
//判断为空
bool QueueEmpty(SqQueue Q){
if(Q.size==0)c++
return true;
else
return false;
}
入队(队尾入队)
//入队
bool InQueue(SqQueue &Q,Elemtype x){
if (Q.size == Maxsize){
return false;
}
Q.data[Q.rear] = x; //尾部插入数据
Q.rear = (Q.rear+1)%Maxsize; //队尾指针后移
Q.size ++;
return true;
}
出队
//出队
bool DeQueue(SqQueue &Q,Elemtype &x){
if (Q.rear == Q.front){
return false;
}
x = Q.data[Q.front];
Q.front = (Q.front+1)%Maxsize;
Q.size--;
return true;
}
获取队头元素
//获取队头元素
bool GetHead(SqQueue Q,Elemtype &x){
if (Q.size == 0)
return false;
x = Q.data[Q.front];
return true;
}
打印队列
//打印队列
void PrintQueue(SqQueue Q){
int tmp = Q.front;
while (tmp!=Q.rear){
cout<<Q.data[tmp]<<" ";
tmp=(tmp+1)%Maxsize;
}
}
全部代码
#include "iostream"
using namespace std;
//队列的声明
#define Maxsize 10
typedef int Elemtype;
typedef struct{
Elemtype data[Maxsize]; //用静态数组存放队列元素
int front,rear; //队头指针和队尾指针
int size;
}SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
Q.rear = Q.front = 0;
Q.size = 0;
}
//判断为空
bool QueueEmpty(SqQueue Q){
if(Q.size==0)
return true;
else
return false;
}
//入队
bool InQueue(SqQueue &Q,Elemtype x){
if (Q.size == Maxsize){
return false;
}
Q.data[Q.rear] = x; //尾部插入数据
Q.rear = (Q.rear+1)%Maxsize; //队尾指针后移
Q.size ++;
return true;
}
//出队
bool DeQueue(SqQueue &Q,Elemtype &x){
if (Q.rear == Q.front){
return false;
}
x = Q.data[Q.front];
Q.front = (Q.front+1)%Maxsize;
Q.size--;
return true;
}
//获取队头元素
bool GetHead(SqQueue Q,Elemtype &x){
if (Q.size == 0)
return false;
x = Q.data[Q.front];
return true;
}
//打印队列
void PrintQueue(SqQueue Q){
int tmp = Q.front;
while (tmp!=Q.rear){
cout<<Q.data[tmp]<<" ";
tmp=(tmp+1)%Maxsize;
}
}
int main(){
SqQueue Q;
InitQueue(Q);
for(int i=1;i<=5;i++){
cout<<"插入队列数据第"<<i<<"个元素:"<<i<<endl;
InQueue(Q,i);
}
PrintQueue(Q);
cout<<endl;
Elemtype head;
GetHead(Q,head);
cout<<"目前队列的队头元素是:"<<head<<";且只能允许出队"<<endl;
int DeEle;
DeQueue(Q,DeEle);
cout<<"现在要删除队头元素是:"<<DeEle<<endl;
cout<<"删除队头之后的队列是:"<<endl;
PrintQueue(Q);
cout<<endl;
DeQueue(Q,DeEle);
cout<<"现在要删除队头元素是:"<<DeEle<<endl;
cout<<"删除队头之后的队列是:"<<endl;
PrintQueue(Q);
cout<<endl;
int DeEle1;
DeQueue(Q,DeEle1);
cout<<"现在要删除队头元素是:"<<DeEle1<<endl;
cout<<"删除队头之后的队列是:"<<endl;
PrintQueue(Q);
}
执行结果
插入队列数据第1个元素:1
插入队列数据第2个元素:2
插入队列数据第3个元素:3
插入队列数据第4个元素:4
插入队列数据第5个元素:5
1 2 3 4 5
目前队列的队头元素是:1;且只能允许出队
现在要删除队头元素是:1
删除队头之后的队列是:
2 3 4 5
现在要删除队头元素是:2
删除队头之后的队列是:
3 4 5
现在要删除队头元素是:3
删除队头之后的队列是:
4 5