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