Guest User

Untitled

a guest
Jun 25th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. #include<iostream>
  2.  
  3. template<typename T>
  4. struct Node {
  5. T data;
  6. Node *next;
  7. Node(T data, Node *next) : data(data), next(next) {}
  8. };
  9.  
  10. template<typename T>
  11. class Stack {
  12. public:
  13. Stack() : top(nullptr), level(0), max_size(10) {}
  14. Stack(int max_size) : top(nullptr), level(0), max_size(max_size) {};
  15. void push(T data);
  16. T pop();
  17. void display();
  18. bool isEmpty() { return level == 0; }
  19. bool isFull() { return level == max_size; }
  20. int geLevel() { return level; }
  21. int getMaxSize() { return max_size; }
  22.  
  23. private:
  24. Node<T> *top;
  25. int level, max_size;
  26. };
  27.  
  28. template<typename T>
  29. void Stack<T>::push(T data) {
  30. if(!isFull()) {
  31. Node<T> *newNode = new Node<T>(data, top);
  32. top = newNode;
  33. level++;
  34. } else {
  35. std::cerr << "stack overflow";
  36. }
  37.  
  38. }
  39.  
  40. template<typename T>
  41. T Stack<T>::pop() {
  42. if(!isEmpty()) {
  43. Node<T> *temp = top;
  44. T data = temp->data;
  45. top = top->next;
  46. level--;
  47. delete temp;
  48. return data;
  49. }
  50.  
  51. std::cerr << "stack underflow";
  52.  
  53. }
  54.  
  55. template<typename T>
  56. void Stack<T>::display() {
  57. Node<T> *curr = top;
  58. while(curr != nullptr) {
  59. std::cout << curr->data << std::endl;
  60. curr = curr->next;
  61. }
  62. }
Add Comment
Please, Sign In to add comment