zoukankan      html  css  js  c++  java
  • 队列——假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意:不设头指针), * 试编写相应的置空队列、判断队列是否为空、入队和出队等算法。

    简单的流程图

    #include<iostream>
    using namespace std;
    
    #define ElemType int
    
    /*
    假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意:不设头指针),
    *     试编写相应的置空队列、判断队列是否为空、入队和出队等算法。
    */
    
    typedef struct QNode{
        ElemType data;
        struct QNode *next;
    }QNode,*QueuePtr;
    
    
    typedef struct{
        QueuePtr rear;
        QNode head;
    }LinkQueue;
    
    string InitQueue(LinkQueue &Q){
        Q.rear = new QNode;                //Q.rear代表一个节点,该节点默认为头结点
        Q.rear->next = Q.rear;             //循环队列,尾指针指向头结点
        return "OK";
    }
    
    string EnQueue(LinkQueue &Q,ElemType e){ //在队尾插入
        QueuePtr S = new QNode; 
        S->data = e;
        S->next=Q.rear->next;                
        Q.rear->next=S;
        Q.rear=S;
        return "OK";   
    }
    
    
    string DeQueue(LinkQueue &Q,ElemType &e){
    
        QNode *q = Q.rear->next->next;
        e = q->data;
        Q.rear->next->next=q->next;
        if(Q.rear->next->next == Q.rear->next) Q.rear=Q.rear->next; //若删除的是最后一个元素时,
        delete q;                                                   //将尾指针归位,将尾指针代表头结点
        return "OK"; 
    }
    
    int IsEmpty(LinkQueue Q){
        if(Q.rear->next == Q.rear) return 1;
        else return 0;
    }
    
    
    int main(){
    
        LinkQueue Q;
        InitQueue(Q);
        EnQueue(Q,2);
        cout << IsEmpty(Q)<<endl;
        ElemType a;
        DeQueue(Q,a);
        cout <<a;
        cout << IsEmpty(Q)<<endl;
        system("pause");
        return 0;
    }

     参阅其他博客,并在其基础上进行修补

    https://blog.csdn.net/JxufeCarol/article/details/83057994

  • 相关阅读:
    如何理解C语言的左结合 和右结合性
    Egg项目使用vscode的debug模式跑单元测试
    为什么要用MongoDB副本集
    理解JS原型和原型链
    防止重复请求攻击
    引擎、编译器和作用域
    闭包原理解析及其应用场景
    树形结构数据完美解决方案
    Excel文件导入导出(基于Nodejs、exceljs)
    架构层面高并发解决方案选择----项目架构模式选择
  • 原文地址:https://www.cnblogs.com/LuMinghao/p/14010272.html
Copyright © 2011-2022 走看看