#include"stdio.h"
#include"stdlib.h"
#define FALSE 0
#define TRUE 1
typedef int ElemType;
typedef struct
{
int front;
int rear;
int maxsize;
ElemType *element;
}Queue;
void create(Queue *Q, int msize)
{
Q->maxsize = msize;
Q->element = (ElemType*)malloc(sizeof(ElemType)*msize);
Q->front = Q->rear = 0;
}
void Destroy(Queue *Q)
{
Q->maxsize = -1;
free(Q->element);
Q->front = Q->rear - 1;
}
bool IsEmty(Queue *Q)
{
return Q->front == Q->rear;
}
bool IsFULL(Queue *Q)
{
return (Q->rear + 1) % Q->maxsize == Q->front;
}
bool Front(Queue *Q, ElemType x)
{
if (IsEmty(Q))
return FALSE;
x = Q->element[(Q->front + 1) % Q->maxsize];
return TRUE;
}
bool EnQueue(Queue *Q, ElemType x)
{
if (IsFULL(Q))
return FALSE;
Q->rear = (Q->rear + 1) % Q->maxsize;
Q->element[Q->rear] = x;
}
bool DeQueue(Queue *Q)
{
if (IsEmty(Q))
return FALSE;
Q->front = (Q->front + 1) % Q->maxsize;
return TRUE;
}
void Clear(Queue *Q)
{
Q->front = Q->rear = 0;
}
void main()
{
Queue s;
int m = 20, i;
create(&s, m);
for (i = 0; i<m; i++)
EnQueue(&s, i);
IsEmty(&s);
IsFULL(&s);
printf("对列头元素是:");
scanf("%d", &i);
Front(&s, i);
DeQueue(&s);
printf("\n删除后对列头元素为是:");
scanf("%d", &i);
Front(&s, i);
Clear(&s);
Destroy(&s);
}
#include"stdlib.h"
#define FALSE 0
#define TRUE 1
typedef int ElemType;
typedef struct
{
int front;
int rear;
int maxsize;
ElemType *element;
}Queue;
void create(Queue *Q, int msize)
{
Q->maxsize = msize;
Q->element = (ElemType*)malloc(sizeof(ElemType)*msize);
Q->front = Q->rear = 0;
}
void Destroy(Queue *Q)
{
Q->maxsize = -1;
free(Q->element);
Q->front = Q->rear - 1;
}
bool IsEmty(Queue *Q)
{
return Q->front == Q->rear;
}
bool IsFULL(Queue *Q)
{
return (Q->rear + 1) % Q->maxsize == Q->front;
}
bool Front(Queue *Q, ElemType x)
{
if (IsEmty(Q))
return FALSE;
x = Q->element[(Q->front + 1) % Q->maxsize];
return TRUE;
}
bool EnQueue(Queue *Q, ElemType x)
{
if (IsFULL(Q))
return FALSE;
Q->rear = (Q->rear + 1) % Q->maxsize;
Q->element[Q->rear] = x;
}
bool DeQueue(Queue *Q)
{
if (IsEmty(Q))
return FALSE;
Q->front = (Q->front + 1) % Q->maxsize;
return TRUE;
}
void Clear(Queue *Q)
{
Q->front = Q->rear = 0;
}
void main()
{
Queue s;
int m = 20, i;
create(&s, m);
for (i = 0; i<m; i++)
EnQueue(&s, i);
IsEmty(&s);
IsFULL(&s);
printf("对列头元素是:");
scanf("%d", &i);
Front(&s, i);
DeQueue(&s);
printf("\n删除后对列头元素为是:");
scanf("%d", &i);
Front(&s, i);
Clear(&s);
Destroy(&s);
}