#include<stdio.h>
#include<stdlib.h>
#define MaxSize 5
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];//数组,存储 MaxSize -1个元素
int front,rear;//队列头,队列尾
}SqQueue;
//初始化队列
void InitQueue(SqQueue& Q)
{
Q.front= Q.rear = 0 ;
}
//判空
bool isEmpty(SqQueue Q)
{
if(Q.front==Q.rear)
{
return true;
}
return false;
}
//入队
bool EnQueue(SqQueue&Q,int x)
{
if((Q.rear + 1) % MaxSize == Q.front)
{
return false;//队列满
}
else
{
Q.data[Q.rear ] = x;
Q.rear = (Q.rear + 1)%MaxSize;//向后移动一格
return true;
}
}
//出队
bool DeQueue(SqQueue &Q,int &x)
{
if(Q.rear == Q.front)
{
return false;//队列为空
}
else
{
x = Q.data[Q.front];
Q.front = (Q.front + 1)%MaxSize;
return true;
}
}
int main()
{
SqQueue Q;
bool ret;//存储返回值
ElemType Element;//存储出队元素
InitQueue(Q);
ret=isEmpty(Q);
if(ret)
{
printf("队列为空\n");
}
else
{
printf("队列为空\n");
}
EnQueue(Q,3);
EnQueue(Q,4);
EnQueue(Q,5);
ret = EnQueue(Q,6);
ret = EnQueue(Q,7);
if(ret)
{
printf("入队成功\n");
}
else
{
printf("入队失败\n");
}
ret = DeQueue(Q,Element);
if (ret)
{
printf("出队成功,元素值为 %d\n",Element);
}
else
{
printf("出队失败\n");
}
ret = DeQueue(Q,Element);
if (ret)
{
printf("出队成功,元素值为 %d\n",Element);
}
else
{
printf("出队失败\n");
}
return 0;//此时front=2,data还是{3,4,5,6}但是输出的是3 4
}
C语言实现数据结构队列
最新推荐文章于 2022-06-28 13:04:20 发布