Temat 3 Flashcards
Temat 3: Kolejki, stosy
Czym jest kolejka? Jakie mamy rodzaje kolejek?
Kolejka do abstrakcyjna struktura danych, w której dodawanie i usuwanie jest ze sobą powiązane.
Rodzaje:
- FIFO (First-In First-Out)
- LIFO (Last-In First-Out)
- Dwukierunkowa (Deque) - dodawanie i usuwanie na obu końcach
- Cykliczna
- Priorytetowa
Na jakich strukturach możemy zaimplementować kolejkę?
Listy wiązane, tablica dynamiczna, grafy/drzewa
Czym różni się stos od typowej kolejki?
Stos jest to implementacja kolejki LIFO, gdzie elementy dodawane są na szczyt i ze szczytu są usuwane.
Dlaczego implementacja kolejki priorytetowej na liście wiązanej jest naiwna?
Implementacja kolejki priorytetowej musi mieć wydajną metodę extract_max/min, a żeby to osiągnąć, musi wydajnie przeszukiwać kolejkę w poszukiwaniu elementu.
Przeszukiwanie listy w poszukiwaniu wartości jest naiwne na czas złożoności obliczeniowej, która w najgorszym przypadku wynosi O(n), czyli musimy przejść przez całą listę, aby znaleźć nasz element.
Złożoność operacji dla kolejki w zależności od implementacji: lista wiązana, tablica dynamiczna
ENQUEUE: Lista wiązana=O(1) | Tablica dynamiczna=O(1) A
DEQUEUE: Lista wiązana=O(1) | Tablica dynamiczna=O(1) A
ISEMPTY: Lista wiązana=O(1) | Tablica dynamiczna=O(1)
PEEK: Lista wiązana=O(1) | Tablica dynamiczna=O(1)