Documente Academic
Documente Profesional
Documente Cultură
Stiva
Stiva este un tip particular de listă simplu înlănţuită în care adăugarea sau excluderea unui element se
face la un singur capăt al listei, numit vârf . Elementul introdus primul în stivă,
Vârf poartă numele de bază a stivei (vezi figura alăturată).
Prim Observaţii:
singurul element din stivă, la care avem acces direct, este cel de la vârful
stivei;
trebuie cunoscut în permanenţă vârful stivei (pointerul Prim);
stiva este utilizată atunci când programul trebuie să amâne execuţia unor
Baza NULL operaţii, pentru a le executa ulterior, în ordinea inversă apariţiei lor;
stiva funcţionează după principiul: Ultimul sosit este primul servit.
1.2.5. Coada
Coada reprezintă o altă categorie specială de listă simplu înlănţuită, în care elementele se adaugă la un
capăt (sfârşit) şi se suprimă la celălalt capăt (început). Despre primul element pus în coadă se spune că
este capul cozii, despre ultimul că este sfârșitul cozii. Modelul intuitiv al acestei structuri este coada
care se formează la un magazin: lumea se aranjează la sfârşitul cozii, cei care se găsesc la începutul cozii
sunt serviţi şi părăsesc apoi coada.
Elementele unei cozi se structurează ca în următoarea figură:
NULL Coada
Prim Ultim
Observaţii:
trebuie cunoscut în permanenţă începutul cozii şi sfârşitul cozii (pointerii Prim şi Ultim);
capul cozii se modifică de fiecare dată când eliminăm un element din coadă, iar sfârșitul cozii se
modifică de fiecare dată când adăugăm un element în coadă;
accesul este permis astfel:
un element se poate pune în coadă numai după elementul aflat la sfârșitul cozii şi după
această operație el devine sfârșit al cozii;
se poate scoate din coadă numai elementul aflat în capul cozii şi după această operație în
capul cozii rămâne elementul care a fost pus în coadă după el.
coada este utilizată atunci când informaţiile trebuie prelucrate exact în ordinea în care ”au sosit”, ele
sunt reţinute în coadă până când pot fi prelucrate;
coada funcţionează după principiul “Primul venit –primul servit”.
Observaţie
Elaborarea programului complet (pentru crearea unei liste ordonate) rămâne în sarcina
programatorului.
1. Scrieţi o funcţie care să primească ca parametru adresa primului nod al unei liste simplu înlănţuite şi
care să returneze numărul de noduri ale listei.
2. Scrieţi o funcţie cu un singur parametru (adresa primului nod dintr-o listă simplu înlănţuită) care să
şteargă din lista specificată toate nodurile care au ca informaţie valoarea 100.
3. De la tastatură se introduce un număr natural n. Creaţi o stivă ce va conţine divizorii acestui număr.
4. De la tastatură se introduce un număr natural n, apoi n numere întregi. Creaţi două cozi, astfel încât
una să conţină numerele negative, iar cealaltă –numerele nenegative dintre cele n numere introduse de la
tastatură.
5. Se consideră o listă simplu înlănţuită ce conţine elemente care au ca informaţie utilă: cod produs,
cantitate şi preţ. Scrieţi o funcţia care calculează preţul total al materialelor înregistrate în listă.
6. Să se scrie o funcţie care ordona crescator elementele unei liste inlanţuite.
7. Interclasarea a două liste ordonate. Se consideră două liste simplu înlănţuite ordonate crescător
cu adresele de început L1 şi respectiv L2. Să se scrie o funcţie care să creize o a treia listă, cu adresa de
început L3, care să conţină informaţiile din ambele liste în ordine crescătoare
Indicaţii. O primă variantă de rezolvare a problemei este de a construi o nouă listă, copiind succesiv
elemente. Se parcurg simultan cele două liste cu ajutorul a doi pointeri. La fiecare pas se compară
elementele curente şi se copiază în lista rezultat elementul cu informaţie mai mică, trecând mai departe
doar în lista din care s-a făcut copierea. Când una dintre liste s-a terminat, se copiază în lista rezultat
nodurile rămase în cealaltă listă.
O altă abordare (mai interesantă) este de a contopi cele două liste, prin modificarea legăturilor dintre
noduri astfel încât să se obţină o singură listă cu informaţiile ordonate crescător. Evident, în acest mod
cele două liste iniţiale se distrug.
.