zoukankan      html  css  js  c++  java
  • 数据结构 队列_队列的接口定义

    队列的一个显著特征是它按照先进先出(FIFO)的方式存储和检索元素。这意味着先存入队列的元素将首先被删除 。我们可以形象的把队列看作是在车站排队买票的一队人。当新人一个一个排到队尾时,队伍也在不停变化。当队伍最前面一个人买完票后将首先离开,接着是下一个,再下一个...在计算机中,将一个元素加入队尾,称为“入队”操作;将一个元素从队首删除,称为“出队”操作(见图1)。我们可以通过检查队列头元素(而不是删除它)来获取元素的某些信息。

     

    队列的接口定义

    queue_init
    void queue_init(Queue *queue,void(*destroy)(void *data));
    返回值:无

    描述:初始化由queue指定的队列。

    在队列进行其他操作之前必须调用初始化函数。参数destroy是一个函数指针,通过调用queue_destroy来释放动态分配的内存空间。它的工作原理与stack_destroy相似。如果队列中的数据不需要释放,那么destroy应该指向NULL。

    复杂度:O(1)
    queue_destroy
    void queue_destroy(Queue *queue);
    返回值:无

    描述:销毁由queue指定的队列。

    在调用queue_destroy之后,队列不允许进行其他操作。除非再次调用queue_init。queue_destroy会删除队列中的所有元素,同时释放queue_init中参数destroy不为NULL时的成员所占有的内存空间。

    复杂度:O(n),n为队列中元素的个数。
    queue_enqueue
    int queue_enqueue(Queue *queue,const void *data);
    返回值:如果元素入队成功则返回零,否则返回-1。

    描述:向queue指定的队列末尾中插入一个元素。新元素包含一个指向data的指针,因此只要元素仍然存在于队列中,data引用的内存就一直有效。与data相关的存储空间由函数的调用者来管理。

    复杂度:O(1)
    queue_dequeue
    int queue_dequeue(Queue *queue,const void **data);
    返回值:如果元素出队成功则返回0,否则返回-1。

    描述:从queue指定的队列头部删除一个元素。返回时data指向已删除元素中存储的数据。与data相关的存储空间将由函数调用者来管理。

    复杂度:O(1)
    queue_peek
    void* queue_peek(const Queue *queue);
    返回值:队列头部元素中存储的数据;如果队列为空则返回NULL。

    描述:获取由queue指定的队列头部元素中存储数据的宏。

    复杂度:O(1)
    queue_size
    int queue_size(const Queue *queue);
    返回值:队列中元素的个数。

    描述:获取由queue指定的队列元素个数的宏。

    复杂度:O(1)
  • 相关阅读:
    numpy数组(一)
    Iterator和Iterable区别:
    jupyter notebook安装相关问题
    Selenium+Headless Firefox配置
    最长不重复子串
    deprecated conversion from string constant to 'char*
    c++求字符串
    原型模式(Prototype)
    工厂方法模式(Factory Method)
    素数序列的生成及其应用(采用了自研的高效算法)
  • 原文地址:https://www.cnblogs.com/idreamo/p/7865766.html
Copyright © 2011-2022 走看看