码迷,mamicode.com
首页 > 其他好文 > 详细

循环队列的复习

时间:2017-10-03 10:34:26      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:play   init   需要   元素   none   false   sse   队列   ret   

技术分享
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,就是满了的标志

 

循环队列的复习

标签:play   init   需要   元素   none   false   sse   队列   ret   

原文地址:http://www.cnblogs.com/liuweimingcprogram/p/7623290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!