Sobes.tech
Intern

Стектер эмне?

sobes.tech AI

AIден жооп

Тасма — бул маалымат структурасы, ал LIFO (Акыркы киргизилген — биринчи чыгарыла турган) принцибин колдонуп иштейт. Элементтер бир гана бир жээктен, аны тасманын чокусунан кошуп жана алып салынат.

Негизги операциялар:

  • push: элементти тасманын чокусуна кошуу.
  • pop: элементти тасманын чокусунан алып салуу жана кайтаруу.
  • peek: тасманын чокусундагы маанини алуу, ал алып салынбайт.
  • isEmpty: тасма бошпу деп текшерүү.

Javaда тасма Stack классы менен берилет, ал Vector классынын подклассу:

// Stack колдонуу мисалы
import java.util.Stack;

public class StackExample {

    public static void main(String[] args) {
        Stack<String> stack = new Stack<>();

        stack.push("Биринчи"); // Элементтерди кошуу
        stack.push("Экинчи");
        stack.push("Үчүнчү");

        System.out.println("Тасманын чокусу: " + stack.peek()); // Жогорку элементти карап чыгуу

        while (!stack.empty()) { // Эгер тасма бош эмес болсо
            System.out.println("Алып салуу: " + stack.pop()); // Элементтерди алып салуу
        }
    }
}

Альтернатива жана азыркы Java иштеп чыгууда сунушталган ыкма — ArrayDeque колдонуу, ал жакшыраак иштөө камсыздайт:

// ArrayDeque колдонуу мисалы
import java.util.ArrayDeque;
import java.util.Deque;

public class ArrayDequeStackExample {

    public static void main(String[] args) {
        Deque<String> stack = new ArrayDeque<>(); // Deque'ны тасма катары колдонуу

        stack.push("Биринчи"); // Элементтерди кошуу
        stack.push("Экинчи");
        stack.push("Үчүнчү");

        System.out.println("Тасманын чокусу: " + stack.peek()); // Жогорку элементти карап чыгуу

        while (!stack.isEmpty()) { // Эгер тасма бош эмес болсо
            System.out.println("Алып салуу: " + stack.pop()); // Элементтерди алып салуу
        }
    }
}

Тасмалардын колдонулушу:

  • Арифметикалык билдирүүлөрдү эсептөө (мисалы, кері польская жазуу нотациясында).
  • Редакторлордо операцияларды болтурбоо/кайтаруу (Ctrl+Z/Ctrl+Y).
  • Операциялык системада функция чакырууларын башкаруу.
  • Рекурсивдүү алгоритмдер.
  • Графтар жана дарактарды обход (тереңдик издөө).