#include<stdio.h>
#include<stdlib.h>
typedef int ElementType ;
struct QueueRecord
{
int Capacity;
int Front;
int Rear;
int Size;
ElementType *Array;
};
typedef struct QueueRecord *Queue;
int IsFull(Queue Q) //判满
{
return (Q->Size == Q->Capacity);
}
int IsEmpty(Queue Q) //判空
{
return Q->Size == 0;
}
Queue CreatQueue(int size) //创建队列大小为size
{ //在这里我要多说几句,创建的时候一定要传入值和在主函
Q->Array = (ElementType*)malloc(sizeof(ElementType) * size);
Q->Capacity = size;
Q->Front = 1;
Q->Rear = 0;
Q->Size = 0;
return Q;
}
int Succ(int Value,Queue Q) //实现循环队列
{
if( ++Value == Q->Capacity)
Value = 0;
return Value;
}
void EnQueue(Queue Q,ElementType X) //入队
{
if(IsFull( Q))
printf("Queue is Full\n");
else
{
Q->Rear = Succ(Q->Rear,Q);
Q->Array[Q->Rear] = X;
Q->Size++;
}
}
ElementType TopQueue(Queue Q) //取队头元素
{
if(IsEmpty(Q))
printf("Queue is Empty\n");
else
{
return Q->Array[Q->Front];
}
}
void PopQueue(Queue Q) //出对
{
if(IsEmpty(Q))
printf("Queue is Empty\n");
else
{
Q->Size--;
Q->Front = Succ(Q->Front,Q);
}
}
void Print(ElementType X) //打印X
{
printf("%d",X);
}
void PPT(Queue Q) //打印 Q中的信息
{
printf("Q->Capacity = %d\n",Q->Capacity);
printf("Q->Front = %d\n",Q->Front);
printf("Q->Rear = %d\n",Q->Rear);
printf("Q->Size = %d\n\n",Q->Size);
}
int main(void)
{
ElementType t;
Queue Q = NULL;
Q = CreatQueue(3);
EnQueue(Q,45);
EnQueue(Q,98);
PopQueue(Q);
PopQueue(Q);
t = TopQueue(Q);
Print(t);
return 0;
}
#include<stdlib.h>
typedef int ElementType ;
struct QueueRecord
{
int Capacity;
int Front;
int Rear;
int Size;
ElementType *Array;
};
typedef struct QueueRecord *Queue;
int IsFull(Queue Q) //判满
{
return (Q->Size == Q->Capacity);
}
int IsEmpty(Queue Q) //判空
{
return Q->Size == 0;
}
Queue CreatQueue(int size) //创建队列大小为size
{ //在这里我要多说几句,创建的时候一定要传入值和在主函
Queue Q; //函数里面加 Q = , 博主因为这个错误花费了好长时间,
//或者传入 &Q ,不能直接传入Q,因为传入的是Q的复制品,
//并不会改变原来Q的值
Q = (Queue)malloc(sizeof(struct QueueRecord));Q->Array = (ElementType*)malloc(sizeof(ElementType) * size);
Q->Capacity = size;
Q->Front = 1;
Q->Rear = 0;
Q->Size = 0;
return Q;
}
int Succ(int Value,Queue Q) //实现循环队列
{
if( ++Value == Q->Capacity)
Value = 0;
return Value;
}
void EnQueue(Queue Q,ElementType X) //入队
{
if(IsFull( Q))
printf("Queue is Full\n");
else
{
Q->Rear = Succ(Q->Rear,Q);
Q->Array[Q->Rear] = X;
Q->Size++;
}
}
ElementType TopQueue(Queue Q) //取队头元素
{
if(IsEmpty(Q))
printf("Queue is Empty\n");
else
{
return Q->Array[Q->Front];
}
}
void PopQueue(Queue Q) //出对
{
if(IsEmpty(Q))
printf("Queue is Empty\n");
else
{
Q->Size--;
Q->Front = Succ(Q->Front,Q);
}
}
void Print(ElementType X) //打印X
{
printf("%d",X);
}
void PPT(Queue Q) //打印 Q中的信息
{
printf("Q->Capacity = %d\n",Q->Capacity);
printf("Q->Front = %d\n",Q->Front);
printf("Q->Rear = %d\n",Q->Rear);
printf("Q->Size = %d\n\n",Q->Size);
}
int main(void)
{
ElementType t;
Queue Q = NULL;
Q = CreatQueue(3);
EnQueue(Q,45);
EnQueue(Q,98);
PopQueue(Q);
PopQueue(Q);
t = TopQueue(Q);
Print(t);
return 0;
}