Sunteți pe pagina 1din 29

Tipuri

structurate
de date
LISTE
STIVE
COZI

Sumar
1. Competene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Prezentare general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Structura de date de tip list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4. Structura de date de tip stiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5. Structura de date de tip coad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6. Aplicaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7. Bibliografie i webografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

1. Competene
Competene generale
identificarea datelor care intervin ntr-o problem i a relaiilor dintre
acestea
elaborarea algoritmilor de rezolvare a problemelor
aplicarea algoritmilor fundamentali n prelucrarea datelor
identificarea conexiunilor dintre informatic i societate
Competene specifice
evidenierea necesitii structurrii datelor
prelucrarea datelor structurate
alegerea structurii de date adecvat rezolvrii unei probleme
elaborarea unui algoritm de rezolvare a unei probleme din aria
currcicular a specialitii
alegerea unui algoritm eficient de rezolvare a unei probleme
identificarea aplicaiilor informaticii n viaa social
elaborarea i implementarea unor algoritmi de rezolvare a unor
probleme cotidiene
3

2. Prezentare general
O structur de date este o colecie de elemente asupra creia se pot efectua
anumite operaii.

Prezentare general
Clasificarea structurilor de date:
1. n funcie de tipul datelor memorate n cadrul structurii, structurile de date se
pot clasifica n:
structuri de date omogene toate datele componente sunt de acelai tip
(de exemplu tabloul);
structuri de date neomogene pot conine date de tipuri diferite (de
exemplu nregistrarea).

2. n funcie de modul de alocare a memoriei interne, structurile de date sunt


de dou tipuri:
structuri de date statice ocup o zon de memorie de dimensiune fix,
alocat pe ntreaga durat a execuiei blocului n care este declarat (de
exemplu tabloul, fiierul, lista, stiva, coada);
structuri de date dinamice ocup o zon de memorie de dimensiune
variabil, alocat pe parcursul execuiei programului, la cererea explicit a
programatorului (de exemplu lista, stiva, coada).

3. Structura de date de tip list


Lista este o structur de date de tip secvenial, constituit dintr-o
succesiune de elemente de acelai tip. Fiecare element din list are un
succesor (cu excepia ultimului element al listei) i un predecesor (cu
excepia primului element din list).
- utilizarea listelor se impune ori de cte ori este necesar organizarea ntro form secvenial a unui ansamblu de informaii;

Structura de date de tip list


Operaii elementare care se pot efectua asupra unei liste:
crearea unei liste vide;
inserarea unui element n list;
eliminarea unui element din list;
accesarea unui element din list;
afiarea elementelor unei liste.
Exemplu
14, 2, 6, 77
LISTA

14

77

Structura de date de tip list


Reprezentarea listelor
Cel mai siplu mod de a implementa o list const n memorarea
elementelor sale ntr-un vector.

Declararea listei:
<tip> <identificator>[<nr_elemente>];

Exemplu
int LISTA[11];

Structura de date de tip list


1. Crearea unei liste vide
- se iniializeaz numrul de elemente din list cu 0;
Exemplu
int n=0;

Structura de date de tip list


2. Inserarea unui element n list
- se deplaseaz cu o poziie la dreapta toate elementele din list;
- se insereaz elementul;
- crete cu o unitate numrul de elemente ale listei;
Exemplu
for(i=n;i>=poz;i--)
LISTA[i+1]=LISTA[i];
LISTA[poz]=e;
n++;

Exerciiu
- inserarea unui element la nceputul listei;
- inserarea unui element la sfritul listei.

10

Structura de date de tip list


3. Eliminarea unui element din list
- se deplaseaz cu o poziie la stnga toate elementele din list, ncepnd
cu poziia elementului care se elimin;
- scade cu o unitate numrul de elemente ale listei;
Exemplu
e=LISTA[poz];
for(i=poz;i<n;i++)
LISTA[i]=LISTA[i+1];
n--;

Exerciiu
- tergerea primului element din list;
- tergerea ultimului element din list.

11

Structura de date de tip list


4. Accesarea unui element din list
- se memoreaz un element al listei ntr-o variabil;
Exemplu
e=LISTA[poz];

12

Structura de date de tip list


5. Afiarea elementelor din list
- se parcurge lista element cu element;
Exemplu
for(i=1;i<=n;i++)
cout<<LISTA[i]<<' ';

13

4. Structura de date de tip stiv


Stiva este un tip particular de list, pentru care att operaia de inserare
a unui element n structur, ct i operaia de extragere a unui element
se realizeaz la un singur capt, denumit vrful stivei.
- singurul element din stiv la care avem acces direct este cel de la vrful
stivei;
- trebuie cunoscut n permanen vrful stivei;
- stiva este utilizat atunci cnd programul trebuie s amne execuia unor
operaii, pentru a le executa ulterior, n ordinea invers apariiei lor;
- stiva funcioneaz dup principiul LIFO (Last In First Out);

14

Structura de date de tip stiv


Operaii elementare care se pot efectua asupra unei stive:
crearea unei stive vide;
nserarea unui element n stiv (PUSH);
extragerea unui element din stiv (POP);
accesarea elementului de la vrful stivei (TOP).

Exemplu
14, 2, 6, 77
PUSH

POP

77

vrful
stivei
(TOP)

6
2

STIVA

14

15

Structura de date de tip stiv


Reprezentarea stivelor
Cel mai siplu mod de a implementa o stiv const n memorarea
elementelor sale ntr-un vector.

Declararea stivei:
<tip> <identificator>[<nr_elemente>];

Exemplu
int STIVA[11];

16

Structura de date de tip stiv


1. Crearea unei stive vide
- se iniializeaz numrul de elemente din stiv cu 0;
Exemplu
int vrf=0;

17

Structura de date de tip stiv


2. Inserarea unui element n stiv
- se verific dac stiva nu este plin;
- se mrete vrful stivei;
- se plaseaz la vrf noul element;
Exemplu
if(varf==10)
cout<<Stiva este plin;
else
{
varf++;
STIVA[varf]=e;
}

18

Structura de date de tip stiv


3. Extragerea unui element din stiv
- se verific dac stiva nu este vid;
- se reine elementul din vrful stivei ntr-o variabil;
- se micoreaz cu o unitate vrful stivei;
Exemplu
if(varf==0)
cout<<Stiva este vid;
else
{
e=STIVA[varf];
varf--;
}

19

Structura de date de tip stiv


4. Accesarea elementului din vrful stivei
- se memoreaz elementul din vrful stivei ntr-o variabil;
Exemplu
e=STIVA[varf];

20

5. Structura de date de tip coad


Coada este un tip particular de list, pentru care operaia de inserare a
unui element se realizeaz la un capt, iar operaia de extragere a unui
element se realizeaz la cellalt capt.
- singurul element din coad la care avem acces direct este cel de la
nceput;
- trebuie cunoscut n permanen nceputul cozii i sfritul cozii;
- coada este utilizat atunci cnd informaiile trebuie prelucrate exact n
ordinea n care au sosit i ele sunt reinute n coad pn cnd pot fi
prelucrate;
- coada funcioneaz dup principiul FIFO (First In First Out);

21

Structura de date de tip coad


Operaii elementare care se pot efectua asupra unei cozi:
crearea unei cozi vide;
nserarea unui element n coad;
eliminarea unui element din coad;
accesarea unui element din coad.

Exemplu
14, 2, 6, 77

out

14

14

77

in

COADA

22

Structura de date de tip coad


Reprezentarea cozilor
Cel mai simplu mod de a implementa o coad const n memorarea
elementelor sale ntr-un vector.

Declararea cozii:
<tip> <identificator>[<nr_elemente>];

Exemplu
int COADA[11];

23

Structura de date de tip coad


1. Crearea unei cozi vide
- se iniializeaz numrul de elemente din coad cu 0, pentru aceasta se
iniializeaz variabilele nceput i sfrit;
Exemplu
int nceput=1, sfarsit=0;

24

Structura de date de tip coad


2. Inserarea unui element n coad
- se verific dac coada nu este plin;
- se mrete sfritul cozii cu o unitate;
- se plaseaz la sfrit noul element;
Exemplu
if(sfarsit==10)
cout<<Coada este plin;
else
{
sfarsit++;
COADA[sfarsit]=e;
}

25

Structura de date de tip coad


3. Eliminarea unui element din coad
- se verific dac coada nu este vid;
- se reine elementul de la nceputul cozii ntr-o variabil;
- se mrete cu o unitate nceputul cozii;
Exemplu
if(inceptu>sfarsit)
cout<<Coada este vid;
else
{
e=COADA[inceptu];
inceput++;
}

26

Structura de date de tip coad


4. Accesarea unui element din coad
- se memoreaz elementul de la nceputul cozii ntr-o variabil;
Exemplu
e=COADA[inceptu];

27

6. Aplicaii
Fi de lucru
ntrebri liste, stive, cozi
Aplicaii liste, stive, cozi

28

7. Bibliografie i webografie
1. Cerchez E., erban M., Informatic. Manual pentru clasa a X-a, Editura
Polirom, Iai, 2000
2. Mateescu G, Moraru P., Informatica. Manual pentru calsa a X, Editura
Donaris, Sibiu, 2006
3. Popescu C., Culegere de probleme de informatic, Editura DonarisInfo, Sibiu, 2002
4. Ministerul Educaiei, Cercetrii i Tineretului, Centrul Naional pentru
Curriculum i Evaluare n nvmntul Preuniversitar, Proba scris la
informatic. Examenul de bacalaureat Variante (1-100) , Bucureti
2008
5. http://ro.wikipedia.org/wiki/Lista_(structur%C4%83_de_date)
6. http://ro.wikipedia.org/wiki/Stiv%C4%83_(structur%C4%83_de_date)
7. http://en.wikipedia.org/wiki/Stack_(abstract_data_type)

29