美文网首页
基础数据结构和算法5:队列

基础数据结构和算法5:队列

作者: jdzhangxin | 来源:发表于2019-05-01 16:03 被阅读0次

    1. 队列是什么?

    队列是一种只能从表的一端存数据另一端取数据且遵循FIFO(先进先出)原则的线性存储结构。

    与栈相似,队列是存取受限制的特殊的线性表。
    在队列的一端只能插入元素,这一端叫做队尾。
    在队列的另一端只能删除元素,这一端叫做队首。

    通常只会对队列执行以下两种操作:

    1. 数据元素进队列的过程称为 "入队"
    2. 出队列的过程称为 "出队"。

    队列与栈的比较

    2. 队列怎么用?

    队列一般用来处理与等待相关的处理。

    3. 队列怎么实现?

    考虑到每次出队和入队都要移动队首和队尾指针。若采用顺序存储,将会有可能造成顺序表前段部分存储单元的浪费。虽说可以采用循环队列的方式复用存储单元,若遇到队列满的情况,将队列扩容比较麻烦。因此建议用链表的方式实现队列。

    3.1 定义结构

    typedef int QueueType;
    
    struct LinkNode{
        QueueType key;
        struct LinkNode *next;
    };
    
    typedef struct {
        struct LinkNode *head;//队列的头指针
        struct LinkNode *end;//队列的尾指针
    }Queue;
    

    3.2 定义操作

    1. 创建队列
    Queue queue_create();
    
    1. 访问队首元素
    LinkNode* queue_front(Queue* queue);
    
    1. 入队
    void queue_push(Queue* queue,QueueType element);
    
    1. 出队
    void queue_pop(Queue* queue);
    

    4. 练习

    1. 两个栈实现一个队列
    2. 两个队列实现一个栈

    相关文章

      网友评论

          本文标题:基础数据结构和算法5:队列

          本文链接:https://www.haomeiwen.com/subject/gmigwqtx.html