Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package examplestk2;
- import java.util.Scanner;
- import java.lang.Character;
- class SteckUnderflow extends Exception {
- @Override
- public String toString() {
- return "Стек пуст";
- }
- }
- class SteckOverflow extends Exception {
- @Override
- public String toString() {
- return "Переполнение стека";
- }
- }
- /**
- * **************************************************
- * класс Stk2 - стек произвольных объектов Реализован в виде массива элементов
- * **************************************************
- */
- class Stk2 {
- private Object[] ObStack; // Массив объектов - стек
- private int nElem; // Количество элементов в стеке
- // конструкторы
- Stk2(int n) throws SteckUnderflow {
- // n должно быть положительным
- if (n <= 0) {
- throw new SteckUnderflow();
- }
- // Резервируем память под n элементов
- ObStack = new Object[n];
- // элементов в стеке пока нет
- nElem = 0;
- }
- Stk2() throws SteckUnderflow {
- this(1000); // используем вызов более общего конструктора
- }
- // Добавление элемента в стек
- void push(Object e) throws SteckOverflow {
- // Проверка на переполнение
- if (nElem == ObStack.length) {
- throw new SteckOverflow();
- }
- // Новый элемент добавляется в стек
- ObStack[nElem++] = e;
- }
- // Выталкивание элемента из стека
- Object pop() throws SteckUnderflow {
- // Проверка стека не пустоту
- if (nElem == 0) {
- throw new SteckUnderflow();
- }
- // Физически верхний элемент остается в массиве,
- // но количество элементов уменьшается
- return ObStack[--nElem];
- }
- // Значение верхнего элемента без его удаления
- Object peek() throws SteckUnderflow {
- // Проверка стека не пустоту
- if (nElem == 0) {
- throw new SteckUnderflow();
- }
- // Верхний элемент возвращается в качестве результата
- return ObStack[nElem - 1];
- }
- // Удаление всех элементов из стека (создание пустого стека)
- void makeEmpty() {
- // Физически элементы из массива не убираются,
- // но количество элементов сбрасывается в ноль
- nElem = 0;
- }
- // Проверка стека на пустоту
- boolean empty() {
- // Проверяем только количество элементов
- return nElem == 0;
- }
- public boolean full() { //проверка на заполненность
- return (nElem == 1);
- }
- } // к классу Stk2
- public class Examplestk2 {
- static int toInt(double a) {
- int b = 0;
- while (b < a) {
- b++;
- }
- return b;
- }
- public static void main(String arg[]) throws SteckOverflow, SteckUnderflow {
- Scanner sc = new Scanner(System.in);
- Stk2 m = new Stk2();
- System.out.print("Введите строку: ");
- String rt;
- int t, y;
- long w, r;
- Object q;//, v, c;
- double v, c;
- rt = sc.nextLine();
- char[] x = rt.toCharArray();
- t = rt.length() - 1;
- for (int i = t; i > -1; i--) {
- y = rt.charAt(i);
- if (y == 41 || y == 44 || y == 40) {
- } else if (y < 58 && y > 47) {
- m.push(x[i]);
- } else if (y == 109 || y == 77) {
- //w=Long.parseLong(rt.get(i).toString());
- System.out.println(m.peek());
- v = (int) (char) m.pop();
- c = (int) (char) m.pop();
- if (y == 77) {
- if ((double) v < (double) c) {
- m.push(c);
- } else {
- m.push(v);
- }
- }
- if (y == 109) {
- if ((double) v < (double) c) {
- m.push(v);
- } else {
- m.push(c);
- }
- }
- }
- }
- int tmpc = toInt((double) m.peek());
- System.out.println(((char) tmpc));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment