Junior — Middle
Ποια είναι τα κύρια πλεονεκτήματα και μειονεκτήματα της δομής δεδομένων Stack;
sobes.tech AI
Απάντηση από AI
Η στοίβα (Stack) είναι μια δομή δεδομένων με αρχή λειτουργίας LIFO (Last In, First Out), όπου το τελευταίο στοιχείο που προστίθεται αφαιρείται πρώτο.
Πλεονεκτήματα:
- Απλή υλοποίηση και χρήση.
- Γρήγορη πρόσβαση στο ανώτερο στοιχείο (οι λειτουργίες push, pop, peek εκτελούνται σε O(1)).
- Κατάλληλη για εργασίες που σχετίζονται με επεξεργασία σε αντίστροφη σειρά, όπως διάσχιση δέντρων, ακύρωση ενεργειών, ανάλυση.
Μειονεκτήματα:
- Περιορισμένη πρόσβαση: μπορεί να εργαστεί μόνο με το ανώτερο στοιχείο, χωρίς τυχαία πρόσβαση.
- Το μέγεθος της στοίβας μπορεί να είναι περιορισμένο (π.χ., η στοίβα κλήσεων σε ένα πρόγραμμα), κάτι που μπορεί να οδηγήσει σε υπερχείλιση.
Παράδειγμα σε Go:
package main
import "fmt"
type Stack []int
func (s *Stack) Push(v int) {
*s = append(*s, v)
}
func (s *Stack) Pop() (int, bool) {
if len(*s) == 0 {
return 0, false
}
index := len(*s) - 1
elem := (*s)[index]
*s = (*s)[:index]
return elem, true
}
func main() {
var s Stack
s.Push(10)
s.Push(20)
fmt.Println(s.Pop()) // 20, true
fmt.Println(s.Pop()) // 10, true
}