Test na Fronta (queue)
Fronta (Queue): Kompletní Průvodce a Praktické Využití
Test: Datová struktura fronta, Fronty ve výpočetní technice, Problematika kruhového bufferu a jeho simulace
20 otázek
Otázka 1: Při inicializaci kruhového bufferu se ukazatel `front` nastavuje vždy na 0 a `rear` na -1.
A. Ano
B. Ne
Vysvětlení: Podle studijních materiálů jsou při inicializaci oba ukazatelé `front` a `rear` nastaveny na -1 nebo 0, což indikuje prázdnou frontu. Není pravda, že by `front` byl vždy 0 a `rear` vždy -1.
Otázka 2: Které tvrzení správně popisuje operaci Enqueue (zařazení) ve frontě?
A. Přidá nový prvek na konec (zadní část) fronty a zachová pořadí existujících prvků.
B. Odebere prvek ze začátku (přední části) fronty.
C. V implementaci s kruhovým bufferem se ukazatel 'rear' posune a nový prvek se vloží na jeho pozici.
D. Vrátí hodnotu prvku na začátku fronty, aniž by jej odebrala.
Vysvětlení: Operace Enqueue přidává nový prvek na konec fronty, přičemž pořadí stávajících prvků zůstává nezměněno. V implementaci kruhového bufferu se při Enqueue posouvá ukazatel 'rear' o jednu pozici vpřed a nový prvek se vloží na jeho pozici.
Otázka 3: Během operace `dequeue` ve frontě implementované jako kruhové pole se odebere prvek na pozici ukazatele `front` a tento ukazatel se následně posune.
A. Ano
B. Ne
Vysvětlení: Při operaci `dequeue` se vždy odebere prvek, na který ukazuje `front`, a poté se ukazatel `front` posune na další pozici, aby se odkazoval na nový začátek fronty. Příklad `Dequeue()` operací v materiálech to ilustruje posunem `front` z 0 na 1, poté z 1 na 2 a z 2 na 3.
Otázka 4: Operace `enqueue` ve frontě implementované jako kruhový buffer má časovou složitost O(n).
A. Ano
B. Ne
Vysvětlení: Podle studijních materiálů mají operace `enqueue`, `dequeue` a `peek` pro frontu implementovanou jako kruhový buffer konstantní časovou složitost O(1), nikoliv O(n).
Otázka 5: Máme frontu s maximální kapacitou 5 prvků implementovanou jako kruhové pole. Počáteční stav je prázdná fronta. Postupně jsou provedeny následující operace: Enqueue(10), Enqueue(20), Enqueue(30), Dequeue(), Enqueue(40), Enqueue(50), Enqueue(60), Enqueue(70). Která z následujících tvrzení o konečném stavu fronty po provedení všech operací jsou správná?
A. Prvek 70 byl úspěšně přidán do fronty na pozici indexu 1.
B. Ukazatel 'front' má hodnotu 1 a ukazatel 'rear' má hodnotu 0.
C. Fronta obsahuje prvky v pořadí 60, 20, 30, 40, 50.
D. Po posledním kroku je fronta prázdná.
Vysvětlení: Podle studijních materiálů po provedení operace Enqueue(60) je stav fronty: front = 1, rear = 0, pole = [60, 20, 30, 40, 50]. Následná operace Enqueue(70) selže, protože fronta je plná ( (rear + 1) % 5 == (0 + 1) % 5 == 1, což je aktuální hodnota 'front' ). Proto je prvek 70 do fronty nepřidán. Ukazatele 'front' a 'rear' zůstávají na hodnotách 1 a 0 a obsah pole zůstává [60, 20, 30, 40, 50]. Z toho vyplývá, že tvrzení o úspěšném přidání prvku 70 je nesprávné, tvrzení o hodnotách ukazatelů je správné a tvrzení o obsahu fronty je správné. Fronta není prázdná.