Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template<typename T>
  5. class Stack {
  6. private:
  7.   T data[100];
  8.   int n;
  9.  
  10. public:
  11.   Stack() {
  12.     n = 0;
  13.   }
  14.  
  15.   void push(T x) {
  16.     if (n == 100) {
  17.       throw "Stacku nuk ka hapesire te lire";
  18.     }
  19.  
  20.     this->data[n] = x;
  21.     n++;
  22.   }
  23.  
  24.   T pop() {
  25.     if (n == 0) {
  26.       throw "Nuk ka elemente";
  27.     }
  28.  
  29.     T rezultati = this->data[n - 1];
  30.     n--;
  31.     return rezultati;
  32.   }
  33.  
  34.   T peek() {
  35.     if (n == 0) {
  36.       throw "Nuk ka elemente";
  37.     }
  38.  
  39.     return this->data[n - 1];
  40.   }
  41.  
  42.   int size() {
  43.     return n;
  44.   }
  45.  
  46.   bool empty() {
  47.     return this->size() == 0;
  48.   }
  49. };
  50.  
  51. template<typename T>
  52. Stack<T> reverse(Stack<T> stack) {
  53.   Stack<T> kopja = Stack<T>();
  54.   while (!stack.empty()) {
  55.     kopja.push(stack.pop());
  56.   }
  57.  
  58.   return kopja;
  59. }
  60.  
  61. bool is_palindrome(string str) {
  62.   Stack<char> fwd = Stack<char>();
  63.   for (int i = 0; i < str.length(); i++) {
  64.     fwd.push(str[i]);
  65.   }
  66.  
  67.   Stack<char> rev = reverse(fwd);
  68.   while (!fwd.empty()) {
  69.     if (fwd.pop() != rev.pop()) {
  70.       return false;
  71.     }
  72.   }
  73.  
  74.   return true;
  75. }
  76.  
  77. int main() {
  78.   cout << is_palindrome("abcba") << endl;     // 1
  79.   cout << is_palindrome("hello") << endl;     // 0
  80.   cout << is_palindrome("kapak") << endl;     // 1
  81.   cout << is_palindrome("radar") << endl;     // 1
  82.   cout << is_palindrome("wikipedia") << endl; // 0
  83.  
  84.   // Stack<int> s = Stack<int>();
  85.   // s.push(1);
  86.   // s.push(2);
  87.   // s.push(3);
  88.  
  89.   // Stack<int> s_reverse = reverse(s);
  90.   // cout << s.peek();
  91.  
  92.   return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement