美文网首页
队列的链式表示和实现(链队)

队列的链式表示和实现(链队)

作者: 搬砖的猫 | 来源:发表于2019-10-29 15:04 被阅读0次

链队是指采用链式存储结构实现的队列。通常链队用单链表来表示,其存储结构如下:

//------队列的链式存储结构------
typedef struct QNode{
    QElemType data;
    struct QNode *next;
}QNode, *QueuePtr;
typedef struct{
    QueuePtr front;      //队头指针 
    QueuePtr rear;       //队尾指针 
}; 

链队的初始化

(1)生成新结点作为头结点,队头和队尾指针指向此结点。
(2)头结点的指针域置空。

//链队的初始化
Status InitQueue(LinkQueue &Q){
    //构造一个空队列Q 
    Q.front = Q.rear = new QNode;    //生成新结点作为头结点,队头和队尾指针指向此结点 
    Q.front -> next = NULL;          //头结点的指针域置空 
    return OK;
} 

链队的入队

(1)为入队元素分配结点空间,用指针p指向。
(2)将新结点数据域置为e。
(3)将新结点插入到队尾。
(4)修改队尾指针为p。

//链队的入队
Status EnQueue(LinkQueue &Q, QElemType e){
    //插入元素e为Q的新的队尾元素 
    p = new QNode;        //为入队元素分配结点空间,用指针p指向 
    p -> data = e;        //将新结点数据域置为e 
    p -> next = NULL;
    Q.rear -> next = p;   //将新结点插入到队尾 
    Q.rear = p;           //修改队尾指针 
    return OK; 
} 

链队的出队

(1)判断队列是否为空,若空则返回ERROR。
(2)临时保存队头元素的空间,以备释放。
(3)修改头结点的指针域,指向下一个结点。
(4)判断出队元素是否为最后一个元素,若是,则将队尾指针重新赋值,指向头结点。
(5)释放原队头元素的空间。

//链队的出队
Status DeQueue(LinkQueue &Q, QElemType &e){
    //删除Q的队头元素,用e返回其值 
    if(Q.front == Q.rear){
        return ERROR;              //若队列空,则返回ERROR 
    }
    P = Q.front -> next;           //p指向队头元素 
    e = p -> data;                 //e保存队头元素的值 
    Q.front -> next = p -> next;   //修改头结点的指针域 
    if(Q.rear == p){
        Q.rear = Q.front;          //最后一个元素被删,队尾指针指向头结点 
    }
    delete p;                      //释放原队头元素的空间 
    return OK;
} 

取链队的队头元素

//取队头元素
QElemType GetHead(LinkQueue Q){
    //返回Q的队头元素,不修改队头指针 
    if(Q.front != Q.rear){                 //队列非空 
        return Q.front -> next -> data;    //返回队头元素的值,队头指针不变 
    }
} 

相关文章

  • 队列的链式表示和实现(链队)

    链队是指采用链式存储结构实现的队列。通常链队用单链表来表示,其存储结构如下: 链队的初始化 (1)生成新结点作为头...

  • 链式队列的定义,ios基础知识篇!

    数据结构与算法-链式队列 链式队列的定义 链式队列是用链表来实现的队列,不存在队满的情况。链式队列也包里队列的特点...

  • 第五讲-队列

    队列:先进先出 基本操作:出队(enqueue)or入队(dequeue) 顺序队列和链式队列 用数组实现的队列叫...

  • C语言实现链式队列

    链式队列,简称"链队列",即使用链表实现的队列存储结构。链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为...

  • 链式队列的表示和实现

    和栈相反,队列是一种先进先出的线性表,它只允许在表的一端删除元素,在表的另一段插入元素。和线性表相识,队列也有两种...

  • 数组实现queue

    队列最大的特点就是先进先出,主要的两个操作是入队和出队。用数组实现的叫顺序队列,用链表实现的叫链式队列。在数组实现...

  • 37_队列的概念及实现(下)

    关键词:队列的链式存储实现、链式队列的设计要点、队列链式存储实现的优化、LinkQueue.h 0. 队列的链式存...

  • 数据结构与算法——链式队列

    链式队列 链式队列的结构如上图所示,它有一个队头和队尾,入队的时候从队尾添加节点,而出队的时候从队头进行删除节点。...

  • 数据结构与算法——队列之链式队列

    本节主要介绍下队列的链式存储方式,链式毫无疑问也是有队头front和队尾rear,队头front出队,队尾rear...

  • 队列表示与操作实现

    一、顺序队列表示与操作实现1.1 定义常量及结构 1.2 循环队列方法实现 二、链队列表示与操作实现2.1 定义常...

网友评论

      本文标题:队列的链式表示和实现(链队)

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