您的位置:首页 > 其它

队列的顺序存储结构及其基本运算的实现

2016-04-01 12:08 477 查看
队列是一种受限的线性表,其限制为仅在表的一段进行插入,在表的另一端进行删除。

队尾为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;
}
结果如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: