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).
- ფუნქციების გამოძახების მართვა ოპერაციული სისტემაში.
- რეკურსიული ალგორითმები.
- გრაფებისა და ხეების გადალახვა (გაფართოება ძიება).