• 队列的链式存储结构


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

    /*队列的链式存储类型可描述为*/
    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;
    }
  • 相关阅读:
    day29 作业
    day 29 线程
    day28 进程
    day27 服务端 和客户端
    day26 作业
    day26 网络编程
    java基础 反射
    python 计时
    mongodb 批量插入唯一索引冲突
    js hook
  • 原文地址:https://www.cnblogs.com/zhuxuan1997/p/10701288.html
Copyright © 2020-2023  润新知