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


    队列的一个显著特征是它按照先进先出(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)
  • 相关阅读:
    微信多业务
    jps命令
    三白话经典算法系列 Shell排序实现
    无法识别的属性“targetFramework”。请注意,属性名是大写和小写。错误的解决方案
    Timus 1777. Anindilyakwa 奇怪的问题计数
    tokumx经营报表
    Quartz CronTrigger应用
    HDU 3681 BFS&像缩进DP&二分法
    01背包问题
    Web模板
  • 原文地址:https://www.cnblogs.com/idreamo/p/7865766.html
Copyright © 2020-2023  润新知