数据结构之链队列知识点整理

本文详细介绍了链队的构成,包括存储队列元素的数据节点和指向队头和队尾的链队节点。阐述了链队的四要素,如队空条件、入队和出队操作,以及相应的结构体定义、初始化、销毁和判断队空的方法。
摘要由CSDN通过智能技术生成

1.链队的组成

(1)存储队列元素的数据节点

(2)指向队头和队尾指针的链队节点

2.链队的四要素

(1)队空条件:q->rear==NULL,无需考虑堆满

(2)入队操作:将新的数据节点插入到单链表表尾

(3)出队操作:删除单链表第一个数据节点

3.存储实现

(1)结构体定义

typedef struct QNode    //链队中的数据节点类型
{
    ElemType data;
    struct QNode *next;
}QNode;
typedef struct        //链队节点类型
{
    QNode *front;    //指向单链表队头节点
    QNode *rear;    //指向单链表队尾节点
}LiQueue;

(2)初始化队列

void InitQueue(Liqueue *&q)
{
    q=new LiQueue;
    q->front=NULL;
    q->rear=NULL;
}

(3)销毁队列

void DestroyQueue(LiQueue *&q)
{
    QNode *p=q->front,*r;
    if(p!=NULL)
    {
        r=p->next;
        while(r!=NULL)
        {
            delete p;
            p=r;
            r=p->next;
        }
    }
    delete p;
    delete q;
}   

(4)入队

void enQueue(LiQueue *&q,ElemType e)
{
    QNode *newNode=new QNode;
    newNode->data=e;
    newNode->next=NULL;
    if(Queueempty(q))
    {
        q->rear=newNode;        //当新插入的元素为链队列中第一个元素,需将队头和队尾指针都指向e
        q->front=newNode;
    }else{
        q->rear->next=newNode;
        q->near=newNode;
    }
}

5.出队

bool deQueue(LiQueue *&q,ElemType &e)
{
    QNode *del;
    if(QueueEmpty(q))    //出队要先判空
    {
        return false;
        del=q->front;
    if(q->front==q->rear)        //队列只有一个节点时,队头等于队尾,为空
    {
        q->front=q->rear=NULL;
    }
    else{
        q->front=q->front->next;        //多个节点时
        e=del->data;
        delete del;
        return true;
    }
}

(6)判空

bool QueueEmpty(LiQueue *q)
{
    return(q->rear==NULL)
}

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值