zoukankan      html  css  js  c++  java
  • 循环队列的复习

    struct MyQueue { //循环队列需要少用一个
        int que[1000000], head, tail, MXSIZE;
        void init() {
            MXSIZE = 1000000; // 1e6
            head = tail = 0;
        }
        bool isEmpty() {
            return head == tail;
        }
        bool isFull() {
            return (tail + 1) % MXSIZE == head;
        }
        void add_back(int val) {
            if (isFull()) assert(false);
            que[tail] = val;
            tail = (tail + 1) % MXSIZE;
        }
        int del_front() {
            if (isEmpty()) assert(false);
            int cur = que[head];
            head = (head + 1) % MXSIZE;
            return cur;
        }
    } que;
    View Code

    做题的时候感觉需要循环队列,不然炸内存,也不用stl,慢

    然后自己写了一个,发现忘记了。T_T

    主要是判断full和empty那里,可以知道head == tail就是empty了,但是如果你的队列大小是6,你也想装6个元素,那么head == tail也是满的一个条件。

    为了解决这个,只能是少用一个了,6个的大小,用5个。

    这样,当(tail + 1) % 6 == head,就是满了的标志

  • 相关阅读:
    commons-logging.jar 和 log4j.jar 的关系
    百钱买百鸡
    reflect
    golang结构体、接口、反射
    golang文件操作
    sqlx使用说明
    go example
    goroutine
    生成二维码
    method&interface
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/7623290.html
Copyright © 2011-2022 走看看