栈的压入 弹出序列

template<typename T>
bool isPopOrder(vector<T> vec, vector<T> order)
{
    stack<T> sta;
    if(vec.size() != order.size())
    {
        return false;
    }
    int i = 0, j = 0;
    while(j < order.size())
    {
        if(i < vec.size() && order[j] == vec[i])
        {
            ++j;
            ++i;
            continue;
        }
        else if(!sta.empty() && order[j] == sta.top())
        {
            ++j;
            sta.pop();
            continue;
        }
        else
        {
            if(i >= vec.size() && sta.empty())
                return false;
            sta.push(vec[i++]);
        }
    }

    return sta.empty();
}

输入两个整数序列,第一个表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。

posted @ 2016-08-14 11:28  genidong  阅读(119)  评论(0编辑  收藏  举报