2023-03-31-顺序队列SqQueue的基本操作
//基本顺序队列
#include <stdio.h>
#include <stdbool.h>
#define MAXSIZE 50
typedef struct
{
int data[MAXSIZE];
int front,rear;
}SqQueue;
void initSqQueue(SqQueue *Q)//进行队的初始化
{
Q->front=0;
Q->rear=0;
}
bool isEmpty(SqQueue *Q)//判断队伍是否为空
{
if(Q->front==Q->rear)
{
return true;
}
else
{
return false;
}
}
bool EnQueue(SqQueue *Q,int e)//进队
{
if(Q->rear==MAXSIZE)//判断队是否已满,rear是最后一个元素的位置+1
{
return false;
}
else
{
Q->data[Q->rear]=e;//先进行赋值操作
Q->rear++;//再进行++
return true;
}
}
bool DeQueue(SqQueue *Q,int *e)//出队操作,将值赋给e
{
if(isEmpty(Q))
{
return false;
}
else
{
*e=Q->data[Q->front];
Q->front++;//front上移
return true;
}
}
int QueueLength(SqQueue Q)//求队伍长度
{
return (Q.rear-Q.front);
}
int main()
{
SqQueue Q;
initSqQueue(&Q);
int x;
for(int i=0;i<5;i++)
{
scanf("%d",&x);
EnQueue(&Q,x);
}
int *e;
int a=0;
e=&a;
DeQueue(&Q,e);
printf("DeQueue_value: %d\n",*e);
printf("Q.front: %d Q.rear: %d\n",Q.front,Q.rear);
printf("First elem: %d\n",Q.data[Q.front]);
printf("QueueLength: %d\n",QueueLength(Q));
return 0;
}
C++:
//基本顺序队列
#include <stdio.h>
#include <stdbool.h>
#define MAXSIZE 50
typedef struct
{
int data[MAXSIZE];
int front,rear;
}SqQueue;
void initSqQueue(SqQueue &Q)//进行队的初始化
{
Q.front=0;
Q.rear=0;
}
bool isEmpty(SqQueue &Q)//判断队伍是否为空
{
if(Q.front==Q.rear)
{
return true;
}
else
{
return false;
}
}
bool EnQueue(SqQueue &Q,int e)//进队
{
if(Q.rear==MAXSIZE)//判断队是否已满,rear是最后一个元素的位置+1
{
return false;
}
else
{
Q.data[Q.rear]=e;//先进行赋值操作
Q.rear++;//再进行++
return true;
}
}
bool DeQueue(SqQueue &Q,int *e)//出队操作,将值赋给e
{
if(isEmpty(Q))
{
return false;
}
else
{
*e=Q.data[Q.front];
Q.front++;//front上移
return true;
}
}
int QueueLength(SqQueue Q)//求队伍长度
{
return (Q.rear-Q.front);
}
int main()
{
SqQueue Q;
initSqQueue(Q);
int x;
for(int i=0;i<5;i++)
{
scanf("%d",&x);
EnQueue(Q,x);
}
int *e;
int a=0;
e=&a;
DeQueue(Q,e);
printf("DeQueue_value: %d\n",*e);
printf("Q.front: %d Q.rear: %d\n",Q.front,Q.rear);
printf("First elem: %d\n",Q.data[Q.front]);
printf("QueueLength: %d\n",QueueLength(Q));
return 0;
}