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

队列是一种受限的线性表,其限制为仅在表的一段进行插入,在表的另一端进行删除。

队尾为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;
}
结果如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值