队列是一种受限的线性表,其限制为仅在表的一段进行插入,在表的另一端进行删除。
队尾为rear,队首为front,队列的 基本特征先进先出。
#include <iostream>
#include <stdlib.h>
#define MaxSize 10
using namespace std;
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int front,rear;
} SqQueue;
void InitQueue(SqQueue *q);//初始化队列
void DestroyQueue(SqQueue *q);//销毁队列
bool QueueEmpty(SqQueue *q);//判断队列是否为空
bool enQueue(SqQueue *q,ElemType e);//进队列
bool deQueue(SqQueue *q,ElemType &e);//出队列
int main()
{
SqQueue *q = new SqQueue();
cout<<"1、初始化队列"<<endl;
InitQueue(q);
cout<<"2、判断队列是否为空:";
cout<<QueueEmpty(q)<<endl;
cout<<"3、进队"<<endl;
enQueue(q,'a');
ElemType e;
deQueue(q,e);
cout<<"6、出队列:"<<e<<endl;
cout<<"5、进队"<<endl;
enQueue(q,'b');
deQueue(q,e);
cout<<"6、出队列:"<<e<<endl;
cout<<"7、销毁队列"<<endl;
DestroyQueue(q);
cout<<"2、判断队列是否为空:";
cout<<QueueEmpty(q)<<endl;
return 0;
}
bool deQueue(SqQueue *q,ElemType &e)//出队列
{
if(q->front==q->rear)
return false;
else
{
q->front++;
e=q->data[q->front];
return true;
}
}
bool enQueue(SqQueue *q,ElemType e)//进队列
{
if(q->rear == MaxSize-1)
return false;
else
{
q->rear++;
q->data[q->rear] = e;
return true;
}
}
bool QueueEmpty(SqQueue *q)//判断队列是否为空
{
return(q->front == q->rear);
}
void DestroyQueue(SqQueue *q)//销毁队列
{
free(q);
}
void InitQueue(SqQueue *q)//初始化队列
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front = q->rear = -1;
}
结果如下: