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()); // Հեռացնել տարրեր
        }
    }
}

Ավելին, ավելի արդյունավետ է օգտագործել 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):
  • Ֆունկցիաների կանչերի կառավարում օպերացիոն համակարգում:
  • Ռեկուրսիվ ալգորիթմներ:
  • Գրանցումների և ծառերի շրջայց (խորքային որոնում):