queue队列 之 数组实现

偶然看到的,记录一下,用head用于front操作,tail用于push操作。

缺点消耗空间,速率不知奥,看起来好看一点,,,简单的可以用这个代替一下。

int GetH(int x, int y)
{
    bool vv[35][35];
    memcpy(vv, has, sizeof(has));
    int head = 0, tail = 0, cnt = 0;
    int _xx[35], _yy[35];
    _xx[tail] = x;
    _yy[tail++] = y;
    while(tail != head)
    {
        int _x = _xx[head];
        int _y = _yy[head];
        for(int i = 0; i < 4; i++)
        {
            int x_ = _x + mo1[i];
            int y_ = _y + mo2[i];
            if(x_ < m && x_ >= 0 && y_ < n && y_ >= 0 && g[x_][y_] != '#' && !vv[x_][y_])
            {
                vv[x_][y_] = true;
                _xx[tail] = x_;
                _yy[tail++] = y_;
                cnt++;
            }
        }
        head++;
    }
    return cnt;
}
View Code
 
原文地址:https://www.cnblogs.com/wolf-yasen/p/7644022.html