首页 > 其他 > 详细

队列的链式存储结构

时间:2019-04-13 15:44:13      阅读:127      评论:0      收藏:0      [点我收藏+]

队列的链式存储实际上是一个带有头指针和尾指针的单链表(含有头结点)

/*队列的链式存储类型可描述为*/
typedef   struct{                      //链式队列结点
    int data;
    struct LinkNode* next;
    }LinkNode;

typedef   struct{          //链式队列的头结点和尾结点
    LinkNode* front;
    LinkNode* rear;
    }LinkQueue;
 

 

链式队列的基本操作

(1)初始化

void  InitQueue(LinkQueue &Q){
    Q.front = Q.rear = (LinkNode*)malloc(sizeof(LinkNode) );        //建立头结点
    Q.rear->next = NULL;
}

(2)判断空

bool  IsEmpty(LinkQueue Q) {
    if(Q.front == Q.rear)    return true;
    else return false;
}

(3)入队

void EnQueue(LinkQueue &Q, int x){
    LinkNode*p = (LinkNode*)malloc( sizeof(LinkNode) );   //创建新节点,插入到链尾
    p->next = x;
    Q.rear ->next = p;
    p->next = NULL;
    Q.rear = p;
}

(4)出队

bool DeQueue( LinkNode &Q , int &x) {
    if(Q.front == Q.rear)    return false;    //空队
    LinkNode* p = Q.front->next;
    x = p->data;
    Q.front->next = p->next;          //头结点的指针指向下一个结点
    if(Q.rear == p)
        Q.rear = Q.front;                 //若原队列中只有一个结点,需要移动rear指针的位置
    free(p);
    return true;
}

 

队列的链式存储结构

原文:https://www.cnblogs.com/zhuxuan1997/p/10701288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!