Structuri de date: Coada (FIFO)

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Care este principiul de funcționare al unei cozi?

  • First In, Last Out (FILO)
  • Last In, Last Out (LILO)
  • First In, First Out (FIFO) (correct)
  • Last In, First Out (LIFO)

Operația Get într-o coadă returnează elementul din față fără a-l elimina.

False (B)

Funcția care inițializează o coadă (o face vidă) se numește adesea ______.

Init

Ce returnează funcția IsEmpty dacă o coadă nu conține atomi?

<p>0 (D)</p> Signup and view all the answers

Într-o implementare dinamică a cozii, ce pointer este folosit pentru a insera un nou element?

<p>tail</p> Signup and view all the answers

Care dintre următoarele operații nu modifică coada?

<p>Front (B)</p> Signup and view all the answers

Complexitatea operațiilor pe coadă este O(n), unde n este numărul de elemente.

<p>False (B)</p> Signup and view all the answers

Într-o implementare statică, ______ indică prima poziție liberă în care se poate insera un element.

<p>tail</p> Signup and view all the answers

Ce condiție indică faptul că o coadă statică este plină?

<p>NextPos(tail) = head (A)</p> Signup and view all the answers

Cum se numește operația din C++ care returnează dimensiunea unei cozi?

<p>size</p> Signup and view all the answers

Asociați următoarele operații cu descrierile lor:

<p>Put = Inserarea unui element în coadă Get = Extragerea unui element din coadă Front = Vizualizarea elementului din față fără extragere IsEmpty = Verificarea dacă coada este vidă</p> Signup and view all the answers

Care dintre următoarele este o aplicație tipică a structurii de date coadă?

<p>Planificarea joburilor de imprimare (C)</p> Signup and view all the answers

În Java, metoda peek() aruncă o excepție dacă coada este goală.

<p>False (B)</p> Signup and view all the answers

Pentru a calcula suma elementelor dintr-o stivă în C++, se pot folosi metodele top() și ______ într-o buclă, până când stiva devine goală.

<p>pop()</p> Signup and view all the answers

Ce rol are funcția NextPos într-o implementare statică a unei cozi?

<p>Returnează urmatoarea pozitie pentru inserare</p> Signup and view all the answers

Care este echivalentul operației Enqueue la tipul de date abstract coadă?

<p>Put (B)</p> Signup and view all the answers

Coada de priorități respectă principiul FIFO.

<p>False (B)</p> Signup and view all the answers

Funcția ______ este folosită în Java pentru a adăuga elemente la sfârșitul unei cozi.

<p>add()</p> Signup and view all the answers

Ce înseamnă LILO în contextul structurii de date coadă?

<p>Last In, Last Out</p> Signup and view all the answers

Care este funcția in C++ care permite accesarea ultimului element din coadă?

<p>back (A)</p> Signup and view all the answers

Asociați următoarele operații ale cozii din Java cu funcționalitatea lor:

<p>add() = Adaugă un element in coada peek() = Accesează primul element al cozii, dar nu îl șterge poll() = Șterge primul element al cozii și îl returnează size() = Returnează numărul de elemente din coadă</p> Signup and view all the answers

Pentru implementarea dinamică a cozii, de câți pointeri este nevoie?

<p>Doi (B)</p> Signup and view all the answers

Dacă o coadă statică este implementată folosind un vector de dimensiune 10, atunci dimensiunea maximă a acesteia va fi 10

<p>False (B)</p> Signup and view all the answers

O coadă este o listă specială organizată pe principiul ______.

<p>FIFO</p> Signup and view all the answers

Mentionați o situatie în care principiul FIFO este încălcat.

<p>Coada de priorități</p> Signup and view all the answers

Flashcards

Ce este o coadă (TAD)?

O listă specială organizată pe principiul FIFO (primul intrat, primul ieșit) sau LILO.

Ce face operația Put într-o coadă?

Adaugă un nod la sfârșitul cozii.

Ce face operația Get într-o coadă?

Îndepărtează (șterge) primul nod din coadă.

Ce face Front într-o coadă?

Returnează informația primului nod, fără a-l șterge.

Signup and view all the flashcards

Ce face Init într-o coadă?

Inițializează coada ca fiind vidă (fără date).

Signup and view all the flashcards

Ce face IsEmpty?

Verifică dacă coada este goală (adevărat) sau nu (fals).

Signup and view all the flashcards

Implementarea cozilor?

Similar listelor sau stivelor. Pot fi dinamice sau statice.

Signup and view all the flashcards

Ce reprezintă head într-o coadă?

Variabilă care punctează spre primul nod inserat.

Signup and view all the flashcards

Ce reprezintă tail într-o coadă?

Variabilă care punctează spre ultimul nod inserat.

Signup and view all the flashcards

Care operații modifică coada?

Modifică coada (Put, Get), Front nu.

Signup and view all the flashcards

Funcția empty() în C++?

Verifică dacă containerul e gol.

Signup and view all the flashcards

Funcția size() în C++?

Returnează dimensiunea cozii.

Signup and view all the flashcards

Funcția front() în C++?

Accesează următorul element din coadă.

Signup and view all the flashcards

Funcția back() în C++?

Accesează ultimul element din coadă.

Signup and view all the flashcards

Funcția push() în C++?

Introduce un element în coadă.

Signup and view all the flashcards

Funcția pop() în C++?

Șterge următorul element din coadă.

Signup and view all the flashcards

Funcția swap() în C++?

Schimbă conținutul.

Signup and view all the flashcards

Study Notes

  • Structuri de date și algoritmi, curs IS – Anul II, prezintă structura de date de tip coadă.

Tipul Abstract de Date (TAD) Coadă

  • Coada este o listă specială, organizată pe principiul FIFO (First In - First Out, primul sosit - primul servit) sau LILO (Last In - Last Out)
  • Inserarea se realizează numai la sfârșitul listei
  • Elementul șters este cel de la începutul listei

Operații pe Structuri de Tipul Coadă

  • Put: Inserarea unui atom (nod) la sfârșitul cozii (echivalent Insert, Enqueue).
  • Get: Îndepărtarea primului atom (nod) al cozii (echivalent Delete, Dequeue).
  • Front: Returnarea informației primului atom (nod) al cozii fără a-l șterge (echivalent Top, Peak).
  • Init: Inițializarea cozii (coadă vidă).
  • IsEmpty: Returnează 1 (true) dacă coada este goală și 0 (false) dacă coada conține atomi.

Exemple de Utilizare a Cozilor

  • Playlist-urile

  • Cozi de mesaje într-o rețea de comunicații

  • Comenzile de tipărire în coada de așteptare a imprimantei

  • Comenzile clienților pe un portal web.

  • Există situații speciale în care principiul FIFO este încălcat, cum ar fi cererile de întreruperi către sistemul de operare sau modelarea cazului în care o persoană cu nevoi speciale "sare" peste coadă, rezultând o coadă de priorități.

Implementare

  • Implementarea cozilor este similară cu cea a listelor sau stivelor și poate fi dinamică sau statică

Coada - Implementare Dinamică

  • Pentru implementarea dinamică, este nevoie de doi pointeri spre primul și ultimul atom (nod) din structură, deoarece operațiile de inserare (put), ștergere (get) și consultare sunt permise doar la unul din cele două capete ale cozii:
  • head (primul nod inserat): Permite obținerea primului element din coadă (get, front).
  • tail (ultimul nod inserat): Permite inserarea unui nou element în coadă (put).

Structura de date și funcțiile de baza in C

  • typedef int atom; - Definirea tipului de date pentru atom

  • struct Element - Structura unui element al cozii, conținând informația (info) și un pointer către elementul următor (*succ)

  • struct Queue - Structura cozii, conținând pointeri către primul (*head) și ultimul element (*tail)

  • Funcții:

    • Queue InitQ(void); - Inițializează coada
    • int IsEmptyQ(Queue q); - Verifică dacă coada este goală
    • void Put (Queue &q, Atom x); - Adaugă un element în coadă
    • Atom Get(Queue &q); - Extrage un elemt din coada
    • Atom Front(Queue q); - Returnează primul element din coada
  • InitQ(void) inițializează o coadă cu ambii pointeri (head și tail) nuli

  • IsEmptyQ(Queue q) verifică dacă ambii pointeri (head și tail) sunt nuli, indicând o coadă goală

  • "Put" inserează un nod nou în coadă si aloca memorie

  • Get: Se extrage (șterge) un nod din coada, se obține pointer către primul nod care urmează a fi șters, se salvează valoarea ce va fi returnată, se actualizează head-ul cozii și se dealocă memoria

Coada – Implementare Statică

  • O coadă statică este implementată pe un spațiu de memorare de tip tablou (vector).
  • Pentru păstrarea timpului de execuție constant O(1) atât pentru operația Put cat si pentru Get, nu trebuiesc mutate elementele cozii în vector.
  • Se utilizează doi indici pe vector: unul pe începutul cozii (head) şi unul pe sfârşitul ei (tail).
  • Tail va indica prima poziție liberă în care se poate insera un element și NU poziția pe care s-a inserat ultimul element.
  • Astfel, o poziție rămâne neocupată când coada va fi plină!

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Conda
5 questions

Conda

IntimateAmazonite avatar
IntimateAmazonite
Cada Niño un Músico Project Quiz
9 questions
E102 CODA Exam Flashcards
25 questions
Use Quizgecko on...
Browser
Browser