Как использовать стек
Объявление стека
stack<int> A; // declares an empty stack.
Толкать
A.push(newElement); // Pushes a new element. O(1)
Поп
A.pop(); // O(1) pop
пустой
A.empty() // O(1)
Размер
A.size(); // O(1)
верхний
A.top(); // O(1). Gives the top element.
Пример:
Проверить наличие сбалансированной круглой скобки
stack<char> st;
map<char, char> matchingBracket;
matchingBracket['{'] = '}';
matchingBracket['['] = ']';
matchingBracket['('] = ')';
for (int i = 0; i < s.length(); i++) {
if (s[i] == '(' || s[i] == '{' || s[i] == '[') {
st.push(s[i]);
} else if (st.empty() ||
matchingBracket[st.top()] != s[i]) {
return false;
} else {
st.pop();
}
}
return st.empty();
Сложность времени: O (len (A))
Вспомогательное пространство: O (len (A)) для стека.