• 数据结构 队列_队列的接口定义


    队列的一个显著特征是它按照先进先出(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)
  • 相关阅读:
    Managing C++ Objects: 管理C++对象 —— 一些建议准则
    像Java一样管理对象:T&形式仅仅用在参数传递
    Visual Studio的语法着色终于调得赏心悦目
    j.u.c: Java并发包的5大块
    笔记:Java Language Specification
    线程与锁
    分布式系统涉及的基本问题
    微服务为什么是一种趋势
    js实现复制功能
    css label两端对齐
  • 原文地址:https://www.cnblogs.com/idreamo/p/7865766.html
Copyright © 2020-2023  润新知