“栈和队列”之队列--基本数据结构

废话不说...

第一期:在队列中,被删去的总是在集合中存在时间最长的那个元素:队列实现的是一种先进先出(first-in,first-out,FIFO)策略;

队列上的INSERT操作称之为入队(ENQUEUE),DELETE操作称为出队(DEQUEUE);正如栈的pop操作一样,DEQUEUE操作也没有元素参数。队列的先进先出特性类似于收银台前排队结账的一排顾客。队列有队头(head)和队尾(tail),当有一个元素入队时,它被放在队尾的位置;

下面是一个简单的队列操作,初始化队列,入队,出队处理;

#include <iostream>
#include <cstdlib>

using namespace std;

const int QueueMaxSize = 30;  //栈空间

typedef int ElemType;
typedef struct Queue
{
    ElemType queue[QueueMaxSize] ;
    int head;      //队头指针
    int tail;       //队尾指针
} QUEUE;

void InitQueue(Queue &Q)
{
    Q.head = Q.tail = 0;
}

int QueueEmpty(QUEUE Q)
{
    if(Q.head == Q.tail)
        return true;
    else
        return false;
}

void EnQueue(QUEUE &Q, ElemType x)  //入队
{
    if((Q.tail + 1)% QueueMaxSize == Q.head)  //判断是否队满
        exit(0);
    Q.queue[Q.tail] = x;  //入队
    Q.tail = (Q.tail + 1) % QueueMaxSize;  //队尾向后延伸
}

ElemType DeQueue(QUEUE &Q)  //出队,并获取队头元素
{
    if (QueueEmpty(Q))  //空队列
        exit(0);
    ElemType x = Q.queue[Q.head];  //获取队头元素
    Q.head =  (Q.head + 1) % QueueMaxSize;
    return x;
}

int main()
{
    Queue Q;
    InitQueue(Q);

    if(QueueEmpty(Q))
        cout<<"队为空"<<endl;
    else
        cout<<"非空队"<<endl;

    EnQueue(Q, 5);
    cout<<DeQueue(Q)<<endl;

    EnQueue(Q, 1);
    EnQueue(Q, 5);

    cout<<DeQueue(Q)<<endl;
    return 0;
}

初始化队列InitQueue,令head = tail = 0;

接下来可进行入队EnQueue处理,若是队满则退出,否则正常进行入队,队尾延伸;

进行出队处理,若是对空则退出,否则正常进行出队,队头延伸;

运行如下:


后续队列处理不定期更新...


*∩_∩*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值