zoukankan      html  css  js  c++  java
  • 队列的链式存储结构

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

    /*队列的链式存储类型可描述为*/
    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;
    }
  • 相关阅读:
    taotao-manager-service/pom.xml
    Grafana+Prometheus 监控 MySQL
    firewall-cmd 常用命令
    K8S 容器的资源需求、资源限制
    K8S 高级调度方式
    性能测试工具 Locust 安装
    cookie 和 session区别
    K8S 调度器,预选策略,优选函数
    CPU 实用工具
    *(int*)&p
  • 原文地址:https://www.cnblogs.com/zhuxuan1997/p/10701288.html
Copyright © 2011-2022 走看看