Reprezentarea Ĺ&#x;i structurarea informatiei
Notiuni prezente in acest curs Structuri dinamice de date: Liste lineare Liste simplu inlantuite Liste dublu inlantuite Operatii asupra listelor inserarea unui nou element stergerea unui element Tipuri de liste: Circulare Cozi Stive Liste nelineare (arbori) Reprezentarea arborilor binari OperaĹŁii cu arbori 18 martie 2010
1
Reprezentarea şi structurarea informatiei
Structuri de date
Structuri dinamice de date
Structurile de date sunt organizări ale datelor în scopul realizării eficiente a unor categorii generale de prelucrări. Diferenta dintre structurile statice si structurile dinamice consta in aceea ca cele dinamice prezinta o evolutie in timp.
18 martie 2010
Lect. ing. Florin Postolache
2
Reprezentarea şi structurarea informatiei
Structuri de date
Liste lineare
lista poate fi privită ca o mulţime finită şi ordonată de elemente oarecare. Un vector poate fi privit ca o listă, dar prezintă două mari dezavantaje:
18 martie 2010
număr elementelor trebuie cunoscut de la început (datorită naturii statice a vectorilor) introducerea unui nou element între altele existente necesită re-aranjarea elementelor care urmează celui nou (datorită naturii compacte a vectorilor).
Lect. ing. Florin Postolache
3
Reprezentarea şi structurarea informatiei
Structuri de date
Listă simplu înlănţuită
Ca si in cazul vectorului, când pointer-ul Pi indică nodul următor, lista se numeşte simplu înlănţuită , ultimul nod conţine în câmpul Pi o valoare ce indică sfârşitul listei - valoare numită nil (în Pascal) sau NULL (în C, C++ sau Java. Indicatorul P0 este de fapt variabila pointer prin care se face acces la listă, E1 este primul iar En este ultimul element al listei, n fiind lungimea listei.
18 martie 2010
Lect. ing. Florin Postolache
4
Reprezentarea şi structurarea informatiei
Structuri de date
Operaţii asupra listelor
Modificările de valoare Ei ale unui nod au loc prin operaţii asupra tipurilor de date ce sunt stocate în câmpurile acestuia operaţiile asupra listelor privesc modificarea structurii acestora, adică a organizării nodurilor prin legăturile dintre ele. Caracterul dinamic al structurii de tip listă ocnsta în modul cum operaţiile afectează dimensiunea listei, fără a modifica poziţia fizică a nodurilor (în memoria de lucru) ci, eventual, valorile indicatorilor din fiecare nod.
18 martie 2010
Lect. ing. Florin Postolache
5
Reprezentarea şi structurarea informatiei
Structuri de date
Operaţii asupra listelor
Inserarea unui nou element Ex în listă este reprezentată în Figura de mai jos; după cum se observă, după „întreruperea legăturii” dintre nodurile Ei, şi Ej, se actualizează doar valorile indicatorilor Pi si Px.
18 martie 2010
Lect. ing. Florin Postolache
6
Reprezentarea şi structurarea informatiei
Structuri de date
Operaţii asupra listelor
La ştergerea unui element (Ei+1), se actualizează valoarea pointer-rului nodului precedent (Ei) pentru a indica elementul următor (Ei+2), iar elementul şters (Ei+1) este eliminat din memorie (eliberează locaţia ocupată până la acest moment).
18 martie 2010
Lect. ing. Florin Postolache
7
Reprezentarea şi structurarea informatiei
Structuri de date
Alte operaţii:
parcurgerea listei în scopul căutării unui nod (de indice sau valoare cunoscută), al primului sau ultimului element (capul sau coada listei); determinarea elementului succesor sau predecesor
pentru un nod dat; iniţializarea listei – adică ştergerea tuturor elementelor din listă (vidarea listei). Operaţiile de ştergere ale unui nod sau a întregii liste face totodată eliberarea zonei de memorie ocupată, spre a fi utilizată pentru alte variabile dinamice. Lect. ing. Florin Postolache 18 martie 2010
8
Reprezentarea şi structurarea informatiei
Structuri de date
Tipuri de liste
listă circulară cand pointer-ul ultimului nod En al listei indică primul element E1, parcurgerea liste se poate face până la capăt şi apoi din nou de la început. Cozi – numite liste FIFO(„First In First Out”) introducerea / eliminarea de elemente se face doar prin capete. Stive – numite liste LIFO („Last In First Out” ).
18 martie 2010
Lect. ing. Florin Postolache
9
Reprezentarea şi structurarea informatiei
Structuri de date
Liste nelineare (arbori)
Pentru această categorie de liste nodurile au legături cu număr variabil şi nu doar între vecini (cu indici succesivi). Relaţiile între noduri nu privesc ordinea ci ierarhia: un nod are relaţii de predecesor („părinte” – de exemplu E2) cu noduri succesor (noduri subordonate, „fii” – exemplu E4 şi E5). Nodurile care nu au „fii” sunt noduri finale şi au valorile indicatorilor nule (NULL).
18 martie 2010
Lect. ing. Florin Postolache
10
Reprezentarea Ĺ&#x;i structurarea informatiei
Structuri de date
18 martie 2010
Lect. ing. Florin Postolache
11
Reprezentarea şi structurarea informatiei
Structuri de date
Liste nelineare (arbori)
Funcţie de numărul maxim de fii ale unui nod avem:
arbore binar – maxim două noduri fii, arbore ternar – maxim trei noduri fii, etc.
Reprezentarea arborilor binari
Cele mai utilizate categorii sunt cele binare Reprezentarea unui arbore se poate face şi folosind un tablou cu două coloane, indicând pe fiecare linie noduri adiacente.
18 martie 2010
Lect. ing. Florin Postolache
12
Reprezentarea şi structurarea informatiei
Structuri de date
Operaţii cu arbori
Parcurgerea arborelui constă în vizitarea succesivă a nodurilor acestuia.
Inserarea şi ştergerea unui nod din arbore – similar celor de la liste liniare.
Determinarea înălţimii arborelui. Determinarea succesorului sau predecesorului unui nod în arbore.
Extragerea unui subarbore.
18 martie 2010
Lect. ing. Florin Postolache
13
Reprezentarea şi structurarea informatiei
Structuri de date
Operaţia de parcurgere a arborilor
18 martie 2010
Lect. ing. Florin Postolache
14
Reprezentarea Ĺ&#x;i structurarea informatiei
Intrebari?
ď Ž
18 martie 2010
Multumesc !
Bazele Informaticii
15