#include<stdio.h>
#define MAXSIZE 100
typedef struct{
int *base; //存储空间的基地址
int front; //头指针
int rear; //尾指针
}SqQueue;
//初始化
bool InitQueue(SqQueue &Q)
{
//构造一个空队列Q
Q.base=new int[MAXSIZE];
if(!Q.base)
return false;
Q.front=Q.rear=0;
return true;
}
//求队列的长度
int QueueLength(SqQueue Q)
{
int length;
length=(Q.rear-Q.front+MAXSIZE)%MAXSIZE;
printf("队列的长度:%d\n",length);
return length;
}
//入队
bool EnQueue(SqQueue &Q,int e)
{
if((Q.rear+1)%MAXSIZE==Q.front) //判断队列是否已经满了
return false;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE; //对我i指针+1
printf("入队的元素为:%d\n",e);
return true;
}
//出队
bool DeQueue(SqQueue &Q,int &e){
//删除Q的队头元素,用e返回其值
if(Q.front==Q.rear)
return false;
e=Q.base[Q.front]; //将对头元素保存到e
Q.front=(Q.front+1)%MAXSIZE;
printf("出队的元素为:%d\n",e);
return false;
}
//取队头元素
int GetHead(SqQueue Q)
{
//返回Q的队头元素,不修改头指针
if(Q.front!=Q.rear)
printf("队头元素为:%d\n",Q.base[Q.front]);
return Q.base[Q.front];
}
int main()
{
SqQueue q;
int e;
InitQueue(q);
QueueLength(q);
EnQueue(q,1);
EnQueue(q,2);
EnQueue(q,3);
EnQueue(q,4);
QueueLength(q);
DeQueue(q,e);
DeQueue(q,e);
QueueLength(q);
GetHead(q);
}
队列的顺序实现(入队、出队、对长、获取队头元素)
最新推荐文章于 2023-04-18 18:32:28 发布