Advertisement

C语言基于无环双向链表构造队列结构

阅读量:

在前两篇博客中,我分别借助静态数组与动态数组的方式对循环队列进行了模拟。然而,在线性表结构中,与队列特性最为相似的当属链表结构。此前我也详细阐述了链表相关的多种操作。今天,我们将采用一种特殊的链表形式——非循环双向链表来实现队列功能。需要说明的是,此处构建的是常规队列,而非循环队列。在使用数组时,我们创建循环队列的主要目的在于节省存储资源;而在链表结构中,每个节点均通过动态方式申请与释放内存空间,不会产生存储浪费现象,因此无需再采用循环队列的设计方式。其次,在诸多资料中常见的是利用单链表实现队列功能,而本文将选用带有头结点和尾结点的非循环双链表进行实现。虽然这种方式需要额外维护两个节点及对应的指针域,但其优势在于在链表头部和尾部执行插入或删除操作时无需遍历整个链表结构,从而使得队列的操作更加高效便捷,并真正实现了仅在头尾位置进行操作的目标。相关代码已上传至https://github.com/chenyufeng1991/Queue_LinkedList

核心代码如下:

(1)初始化队列

复制代码
 //初始化带头结点和尾结点的非循环双向链表

    
 void InitialQueue(Queue **pHead,Queue **pTail){
    
  
    
     *pHead = (Queue *)malloc(sizeof(Queue));

全部评论 (0)

还没有任何评论哟~