顺序队列定义
#define maxsize 50
typedef struct{
int data[maxsize];
int front,rear;
}SqQueue;
循环队列
#include <stdio.h>
#define maxsize 100
typedef struct
{
int data[maxsize];
int front;
int rear;
}SqQueue;
void InitQueue(SqQueue &Q)
{
Q.front = 0;
Q.rear = 0;
}
bool EnQueue(SqQueue &Q, int e)
{
if ((Q.rear + 1) % maxsize == Q.front)
return false;
Q.data[Q.rear] = e;
Q.rear = (Q.rear + 1) % maxsize;
return true;
}
bool DeQueue(SqQueue &Q, int e)
{
if (Q.front == Q.rear)
return false;
e = Q.data[Q.front];
Q.front = (Q.front + 1) % maxsize;
return true;
}
int IsEmpty(SqQueue &Q)
{
if (Q.front == Q.rear)
{
return 1;
}
else
{
return 0;
}
}
int IsFull(SqQueue &Q)
{
if ((Q.rear + 1) % maxsize == Q.front)
{
return 1;
}
else
{
return 0;
}
}
int QueueLength(SqQueue &Q)
{
return (Q.rear - Q.front + maxsize) % maxsize;
}
void PrintQueue(SqQueue &Q)
{
int i;
for (i = Q.front;i != Q.rear; i++)
{
printf("%d ", Q.data[i]);
if(i == maxsize - 1)
{
i = 0;
}
}
printf("\n");
}
int main()
{
SqQueue Q;
InitQueue(Q);
int n;
printf("请输入队列长度:");
scanf("%d", &n);
int arr[n];
for(int i = 0;i<n;i++)
{
printf("请输入第%d个元素:",i+1);
scanf("%d",&arr[i]);
EnQueue(Q,arr[i]);
}
PrintQueue(Q);
DeQueue(Q,n);
PrintQueue(Q);
}