Sunteți pe pagina 1din 3

Facultatea de Matematic i Informatic

Algoritmi i Structuri de Date Laborator


Anul I, semestrul I, an universitar 2013/2014
Grupe: 1412, 1421, 1431, 1451
Web: http://laborator.wikispaces.com

Tema 5
12 noiembrie 2013

Probleme obligatorii
Termen de predare : Laboratorul din sptmna 9 (25 - 29 noiembrie 2013)
(2 p) 1. S se implementeze o list liniar dublu nlnuit n care se vor reine
numere ntregi. Scriei funcii pentru:
a) Adugarea unui element la nceput;
b) Adugarea unui element la sfrit;
c) Adugarea unui element n interiorul listei;
d) Afiarea elementelor listei n ordinea introducerii lor;
e) Afiarea elementelor listei n ordine invers;
f) tergerea unui element din list tiind numrul lui de ordine;
g) tergerea unui element din list tiind valoarea lui.
S se utilizeze aceste functii ntr-un program care afiaz un meniu n
vederea selectrii functiei dorite din cele sapte posibile.
(2 p) 2. Coada cu prioriti este o coad n care elementele au, pe lng cheie i o
prioritate. Vom presupune c cea mai nalt prioritate este 1, urmat de 2, i aa mai
departe. Ordinea liniar este dat de regulile:
- elementele cu aceeai prioritate sunt extrase (i procesate) n ordinea intrrii;
- toate elementele cu prioritate i se afl naintea celor cu prioritate i+1 (i deci
vor fi extrase naintea lor).
Extragerile se fac dintr-un singur capt. Ca s se poat aplica regulile de mai sus la
extragere, inserarea unui nou element cu prioritate i se va face la sfritul listei ce
conine toate elementele cu prioritate i.
S se scrie procedurile de punere i scoatere a unui element ntr-o, respectiv,
dintr-o coad cu prioriti reprezentat cu ajutorul unei liste simplu nlnuite.

Probleme suplimentare
Termen de predare : Laboratorul din sptmna 9 (25 - 29 noiembrie 2013)
(2 p) 3. Se numete DEQUE (de la Double Ended Queue) o structur liniar n care
inserrile i tergerile se pot face la oricare din cele dou capete, dar n nici un alt
loc din coad.
Considernd structura DEQUE implementat cu ajutorul unei liste liniare cu
dubl nlnuire, s se scrie procedurile de inserare i tergere la ambele capete ale
ei; s se utilizeze aceste proceduri ntr-un program care afiaz un meniu n
vederea selectrii procedurii dorite din cele patru posibile.
(2 p) 4. S se scrie procedurile de inserare, respectiv, tergere a unui nod cu o cheie
dat ntr-o, respectiv, dintr-o list circular cu dubl nlnuire i nod marcaj.
(2 p) 5. S se scrie procedurile de inserare i tergere nod ntr-o, respectiv, dintr-o
list circular cu dubl nlnuire i nod marcaj, care implementeaz urmtoarea
strategie: se insereaz la dreapta nodului marcaj i se terge de la stnga sa; cum
se poate interpreta aceast modalitate de modificare a listei ?

O list, Start, cu nod marcaj, va conine n variabila Start adresa acestui nod, iar lista efectiv, n
care n fiecare nod avem reprezentat un element al mulimii de date, va fi Start.next.
Start
...
F ig .2 .1 .1 . L i st

c u

n o d

m a r c a j.

O list cu nod marcaj vid va conine doar nodul marcaj.


Start

Fig.2.1.2. List vid cu nod marcaj.

Probleme facultative
Termen de predare : Laboratorul din sptmna 9 (25 - 29 noiembrie 2013)
Primul raspuns corect prin e-mail primeste punctele suplimentare indicate.
(10 ps) 1. Fie w un sir de caractere. Spunem ca un subsir u al lui w este o margine
(border) daca w incepe si se termina cu u, si in plus u este diferit de w.
Exemple:
(a) pentru w =aba, a este o margine;
(b) pentru w =ababa avem marginile a, aba.
Spunem ca cea mai lunga margine a lui w se numeste "marginea" lui w. Sa se
gaseasca un algoritm liniar care determina marginea lui w.

S-ar putea să vă placă și