一点疑惑
  • 板块学术版
  • 楼主mengxin_oier
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/11/16 09:16
  • 上次更新2023/10/27 02:49:00
查看原帖
一点疑惑
519797
mengxin_oier楼主2022/11/16 09:16

请各位dalao看看本蒟蒻写的deque有什么问题吗?

或者提出一些Hack数据

struct deque
{
    deque(int n) : q(n + 1), sz(0), maxsz(n) {}

    void push_back(int x)
    {
        assert(sz < maxsz);
        sz++;
        q[tt++] = x;
        if (tt == q.size()) tt = 0;
    }

    void push_front(int x)
    {
        assert(sz < maxsz);
        sz++;
        hh--;
        if (hh == -1) hh = q.size() - 1;
        q[hh] = x;
    }

    void pop_back()
    {
        assert(sz > 0);
        sz--;
        tt--;
        if (tt == -1) tt = q.size() - 1;
    }

    void pop_front()
    {
        assert(sz > 0);
        sz--;
        hh++;
        if (hh == q.size()) hh = 0;
    }

    int front()
    {
        assert(sz > 0);
        return q[hh];
    }

    int back()
    {
        assert(sz > 0);
        return q[tt - 1];
    }

    void print()
    {
        int t = hh;
        while (t != tt)
        {
            cout << q[t] << ' ';
            t++;
            if (t == q.size()) t = 0;
        }
        cout << '\n';
    }

    int size()
    {
        return sz;
    }

private:
    vector<int> q;
    int sz;
    int maxsz;
    int hh = 0, tt = 0;
};
2022/11/16 09:16
加载中...