Advertisement
malixds_

25

Jan 16th, 2023
814
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.52 KB | None | 0 0
  1. // Узел связанного списка
  2. class Node
  3. {
  4.     int data;       // целочисленные данные
  5.     Node next;      // указатель на следующий узел
  6. }
  7.  
  8. class Stack
  9. {
  10.     private Node top;
  11.     private int nodesCount;
  12.  
  13.     public Stack() {
  14.         this.top = null;
  15.         this.nodesCount = 0;
  16.     }
  17.  
  18.     // Вспомогательная функция для добавления элемента `x` в stack
  19.     public void push(int x)        // вставляем в начало
  20.     {
  21.         // выделяем новый узел в куче
  22.         Node node = new Node();
  23.  
  24.         // проверяем, заполнен ли Stack (heap). Тогда вставка элемента будет
  25.         // привести к переполнению stack
  26.         if (node == null)
  27.         {
  28.             System.out.println("Heap Overflow");
  29.             return;
  30.         }
  31.  
  32.         System.out.println("Inserting " + x);
  33.  
  34.         // устанавливаем данные в выделенном узле
  35.         node.data = x;
  36.  
  37.         // устанавливаем указатель .next нового узла так, чтобы он указывал на текущий
  38.         // верхний узел списка
  39.         node.next = top;
  40.  
  41.         // обновить верхний указатель
  42.         top = node;
  43.  
  44.         // увеличить размер stack на 1
  45.         this.nodesCount += 1;
  46.     }
  47.  
  48.     // Вспомогательная функция для проверки, пуст stack или нет
  49.     public boolean isEmpty() {
  50.         return top == null;
  51.     }
  52.  
  53.     // Вспомогательная функция для возврата верхнего элемента stack
  54.     public int peek()
  55.     {
  56.         // проверка на пустой stack
  57.         if (isEmpty()) {
  58.             System.out.println("The stack is empty");
  59.             System.exit(-1);
  60.         }
  61.         return top.data;
  62.     }
  63.  
  64.     // Вспомогательная функция для извлечения верхнего элемента из stack
  65.     public int pop()        // удалить в начале
  66.     {
  67.         // проверка на опустошение stack
  68.         if (isEmpty())
  69.         {
  70.             System.out.println("Stack Underflow");
  71.             System.exit(-1);
  72.         }
  73.  
  74.         // принять к сведению данные верхнего узла
  75.         int top = peek();
  76.  
  77.         System.out.println("Removing " + top);
  78.  
  79.         // уменьшить размер stack на 1
  80.         this.nodesCount -= 1;
  81.  
  82.         // обновляем верхний указатель, чтобы он указывал на следующий узел
  83.         this.top = (this.top).next;
  84.  
  85.         return top;
  86.     }
  87.  
  88.     // Вспомогательная функция для возврата размера stack
  89.     public int size() {
  90.         return this.nodesCount;
  91.     }
  92. }
  93.  
  94. class Main
  95. {
  96.     public static void main(String[] args)
  97.     {
  98.         Stack stack = new Stack();
  99.  
  100.         stack.push(1);
  101.         stack.push(2);
  102.         stack.push(3);
  103.  
  104.         System.out.println("The top element is " + stack.peek());
  105.  
  106.         stack.pop();
  107.         stack.pop();
  108.         stack.pop();
  109.  
  110.         if (stack.isEmpty()) {
  111.             System.out.println("The stack is empty");
  112.         }
  113.         else {
  114.             System.out.println("The stack is not empty");
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement