结构体定义如下:
队列定义如下:
#include <iostream>
#include "QNode.h"
using namespace std;
void InitQueue(SqQueue &Q)
{
//构造一个空队列Q
Q.base = (char *) malloc(QUEUE_INIT_SIZE * sizeof(char));
if( !Q.base ) printf("InitQueue:Memory Assign Fail!/n");//存储分配失败
Q.front = Q.rear = 0;
printf("InitQueue: Memory Assign Succee!/n");
}
void Add(SqQueue &Q,char e)
{
if((Q.rear + 1) % QUEUE_MAX_SIZE == Q.front) //判满时将少用一个元素空间
{
printf("Add:Queue short!/n");
return;
}
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1) % QUEUE_MAX_SIZE;
printf("Add:Add Succee!/n");
}
void Remove(SqQueue &Q,char &e)
{
if(Q.front == Q.rear)
{
printf("Remove :Queue empty!");
return ;
}
e = Q.base[Q.front];
Q.front = (Q.front + 1) % QUEUE_MAX_SIZE;
printf("Remove :Remove Succee!");
}
void IsEmpty(SqQueue &Q)
{
if(Q.front == Q.rear)
printf("IsEmpty:Queue Short!");
}
void IsFull(SqQueue &Q)
{
if((Q.rear + 1) % QUEUE_MAX_SIZE == Q.front)
printf("IsFull: Queue is Full!");
}
void main()
{
char c1 = 'a', c2 = 'b', c3 = 'c',c4 = 'd', c5 = 'e';
SqQueue SQ;
InitQueue(SQ);
Add(SQ,c1);
IsEmpty(SQ);
Add(SQ,c2);
Add(SQ,c3);
Add(SQ,c4);
Add(SQ,c5);
Remove(SQ,c1);
}