#include <iostream>
using namespace std;
#define MAX 100
template <typename T>
class Stack {
private:
int top;
T arr[MAX];
public:
Stack() {
top = -1;
}
void push(T element)
{
if (top == MAX - 1)
{
cout << "Stack Overflow" << endl;
}
else
{
top++;
arr[top] = element;
}
}
T pop()
{
if (top == -1)
{
cout << "Stack Empty";
return -1;
}
else
{
return arr[top--];
}
}
bool isStackEmpty()
{
return (top == -1);
}
bool isStackFull()
{
return (top == MAX - 1);
}
void peek()
{
if (top == -1)
{
cout << "Stack Empty";
}
else
{
cout << "Top element: " << arr[top] << endl;
}
}
T displayStack()
{
if (top == -1)
{
cout << "Stack Empty";
}
else
{
cout << "Stack elements: ";
for (T i = top; i >= 0; i--)
{
cout << arr[i] << " ";
}
cout << endl;
}
}
void clearStack()
{
top = -1;
cout << "Stack cleared" << endl;
}
};
int main()
{
Stack<char> s;
char y;
s.push('A');
s.push('B');
s.push('C');
y = s.pop();
cout << "Popped element: " << y << endl;
s.peek();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBNQVggMTAwCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KCmNsYXNzIFN0YWNrIHsKcHJpdmF0ZToKCWludCB0b3A7CglUIGFycltNQVhdOwoKcHVibGljOgoJU3RhY2soKSB7CgkJdG9wID0gLTE7IAoJfQoJdm9pZCBwdXNoKFQgZWxlbWVudCkgCgl7CgkJaWYgKHRvcCA9PSBNQVggLSAxKQoJCXsKCQkJY291dCA8PCAiU3RhY2sgT3ZlcmZsb3ciIDw8IGVuZGw7CgkJfQoJCWVsc2UKCQl7CgkJCXRvcCsrOwoJCQlhcnJbdG9wXSA9IGVsZW1lbnQ7CgkJfQoJfQoKCVQgcG9wKCkgCgl7CgkJaWYgKHRvcCA9PSAtMSkKCQl7CgkJCWNvdXQgPDwgIlN0YWNrIEVtcHR5IjsKCQkJcmV0dXJuIC0xOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gYXJyW3RvcC0tXTsKCQl9Cgl9CgoJYm9vbCBpc1N0YWNrRW1wdHkoKQoJewoJCXJldHVybiAodG9wID09IC0xKTsKCX0KCglib29sIGlzU3RhY2tGdWxsKCkKCXsKCQlyZXR1cm4gKHRvcCA9PSBNQVggLSAxKTsKCX0KCgl2b2lkIHBlZWsoKQoJewoJCWlmICh0b3AgPT0gLTEpCgkJewoJCQljb3V0IDw8ICJTdGFjayBFbXB0eSI7CgkJfQoJCWVsc2UKCQl7CgkJCWNvdXQgPDwgIlRvcCBlbGVtZW50OiAiIDw8IGFyclt0b3BdIDw8IGVuZGw7CgkJfQoJfQoKCVQgZGlzcGxheVN0YWNrKCkKCXsKCQlpZiAodG9wID09IC0xKQoJCXsKCQkJY291dCA8PCAiU3RhY2sgRW1wdHkiOwoJCX0KCQllbHNlCgkJewoJCQljb3V0IDw8ICJTdGFjayBlbGVtZW50czogIjsKCQkJZm9yIChUIGkgPSB0b3A7IGkgPj0gMDsgaS0tKQoJCQl7CgkJCQljb3V0IDw8IGFycltpXSA8PCAiICI7CgkJCX0KCQkJY291dCA8PCBlbmRsOwoJCX0KCX0KCgl2b2lkIGNsZWFyU3RhY2soKQoJewoJCXRvcCA9IC0xOwoJCWNvdXQgPDwgIlN0YWNrIGNsZWFyZWQiIDw8IGVuZGw7Cgl9Cgp9OwoKaW50IG1haW4oKQp7CglTdGFjazxjaGFyPiBzOwoJY2hhciB5OwoKCXMucHVzaCgnQScpOwoJcy5wdXNoKCdCJyk7CglzLnB1c2goJ0MnKTsKCXkgPSBzLnBvcCgpOwoJY291dCA8PCAiUG9wcGVkIGVsZW1lbnQ6ICIgPDwgeSA8PCBlbmRsOwoJcy5wZWVrKCk7CiAgICByZXR1cm4gMDsKfQ==