Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template<typename T>
- class Stack {
- private:
- T data[100];
- int n;
- public:
- Stack() {
- n = 0;
- }
- void push(T x) {
- if (n == 100) {
- throw "Stacku nuk ka hapesire te lire";
- }
- this->data[n] = x;
- n++;
- }
- T pop() {
- if (n == 0) {
- throw "Nuk ka elemente";
- }
- T rezultati = this->data[n - 1];
- n--;
- return rezultati;
- }
- T peek() {
- if (n == 0) {
- throw "Nuk ka elemente";
- }
- return this->data[n - 1];
- }
- int size() {
- return n;
- }
- bool empty() {
- return this->size() == 0;
- }
- };
- template<typename T>
- Stack<T> reverse(Stack<T> stack) {
- Stack<T> kopja = Stack<T>();
- while (!stack.empty()) {
- kopja.push(stack.pop());
- }
- return kopja;
- }
- bool is_palindrome(string str) {
- Stack<char> fwd = Stack<char>();
- for (int i = 0; i < str.length(); i++) {
- fwd.push(str[i]);
- }
- Stack<char> rev = reverse(fwd);
- while (!fwd.empty()) {
- if (fwd.pop() != rev.pop()) {
- return false;
- }
- }
- return true;
- }
- int main() {
- cout << is_palindrome("abcba") << endl; // 1
- cout << is_palindrome("hello") << endl; // 0
- cout << is_palindrome("kapak") << endl; // 1
- cout << is_palindrome("radar") << endl; // 1
- cout << is_palindrome("wikipedia") << endl; // 0
- // Stack<int> s = Stack<int>();
- // s.push(1);
- // s.push(2);
- // s.push(3);
- // Stack<int> s_reverse = reverse(s);
- // cout << s.peek();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement