Structuri de Date și Algoritmi

Previzualizare seminar:

Extras din seminar:

Un pointer (variabila referinta) este o variabila ce contine adresa unei alte variabile, numite statice, carora li se aloca un spatiu de memorie pe toata durata blocului unde au fost declarate. Variabilele de tip referinta se numesc dinamice, ele putindu-se creea independent de structura programului, cu o procedura standard, numita NEW pentru PASCAL si MALLOC pentru C.

Variabilele referinta nu apar explicit intr-o declaratie de tip si nu pot sa fie referite direct printr-un identificator. Un tip pointer P consta dintr-un numar nelimitat de adrese de memorie ale variabilelor de un anumit tip (T). Se spune ca P este legat la T.

Definirea tipului referinta

type <identificator>=* <identificator de tip>

Exemplu:

int *p1, *p2 ;

Se definesc doua tipuri de pointer numite p1 si p2 ce indica spre variabilele de tip intreg.

Declararea unei variabile de tip referinta

Se face prin indicarea numelui pointerului precedat de caracterul *. Semnificatia acestui mod de referire este urmatoarea: *p reprezinta valoarea variabilei ce se afla memorata la adresa indicata de pointerul p.

Exemplu:

In exemplul urmator, pointerului 'p1' i s-a alocat o adresa libera din memorie prin procedura ,,malloc". La adresa respectiva s-a inscris valoarea variabilei "i". Prin atribuirea p2=p1, variabila "j" va contine ca valoare, aceeasi valoare ca si variabila "i".

int *p1, *p2;

int i, j;

{

scanf("%d",&i);

p1=(int *)malloc(sizeof(int));

p1=*i;

p2=p1;

*j=p2;

printf("%D",j);

}

Observatii

-Desi se pot face atribuiri unor variabile de tip referinta, valoarea acestora nu se poate vizualiza, nefiind considerata un numar intreg.

-Orice variabila de tip referinta poate primi o valoare speciala (numita NIL, respectiv NULL in "C") cu urmatoarea specificatie: - respectiva variabila nu va indica spre nici o adresa de memorie.

Variabile referinta asociate structurilor de tip articol

In cazul cind un tip de variabile referinta p este legat la un tip de date T, apelul procedurii malloc (p1), unde p1 este un pointer de tipul "p" declarat, are ca efect alocarea unei zonei de memorie cu o dimensiune egala cu aceea a unei variabile din tipul T si atribuirea adresei de inceput a zonei de memorie pointerului p1. Daca tipul de date T este de tipul articol cu parte varianta, atunci se calculeaza lungimea zonei in cazul partii variante celei mai mari (lungime acoperitoare).

O aplicatie importanta a folosirii pointerilor o constituie implementarea prin programe a structurilor de date abstracte, de tipul grafurilor finite. Considerind o structura de date de tip articol "T" care contine unul sau mai multe cimpuri de tipul pointer, se poate construi o structura de graf finit considerind "T" ca multimea nodurilor grafului si pointerii drept arce.

Cel mai simplu exemplu il constitue o lista simplu inlantuita:

typedef struct nod

{

inf:...(informatie utila a nodului)

struct nod *urm;

} arc;

Am notat cu 'inf' cimpul ce contine informatia utila a nodului si cu 'urm' cimpul ce este un pointer de tipul arc, adica spre un articol de acelasi tip.

O reprezentare grafica a acestui tip este urmatoarea:

Referirea unui cimp al unui articol de acest tip se poate face astfel:

arc *p

p->inf -reprezinta cimpul inf al unui articol referit de pointerul p;

p->urm-reprezinta cimpul ,,urm" al unui articol referit de pointerul p (adresa urmatorului articol din lista)

Observatie:

Tipul referinta este singurul care permite definirea unui tip de date dupa definirea lui insusi.

Alocarea si dealocarea memoriei

Alocarea spatiului de memorie necesar se face cu ajutorul procedurii NEW() pentru PASCAL si cu functia MALLOC() pentru limbajul C. Folosind de multe ori procedura NEW, spatiul de memorie ramas disponibil se poate micsora foarte mult. Daca insa intr-un punct al programului se poate renunta la spatiul alocat unor variabile referinta, se poate folosi procedura DISPOSE, complementara procedurii NEW, sau cu functia FREE(x) pentru limbajul C. DISPOSE(x) (respectiv FREE(x)) elibereaza spatiul de memorie alocat variabilei

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Structuri de Date si Algoritmi
    • Partea_doua.doc
    • Partea_treia.doc
    • Prima_Parte.doc
Alte informații:
Tipuri fișiere:
doc
Diacritice:
Da
Nota:
9/10 (6 voturi)
Nr fișiere:
3 fisiere
Pagini (total):
255 pagini
Imagini extrase:
358 imagini
Nr cuvinte:
96 967 cuvinte
Nr caractere:
529 783 caractere
Marime:
1.25MB (arhivat)
Publicat de:
Anonymous A.
Nivel studiu:
Facultate
Tip document:
Seminar
Domeniu:
Limbaje de Programare
Tag-uri:
pointeri, algoritmi, variabile, programare, procedura
Predat:
la facultate
Materie:
Limbaje de Programare
Profesorului:
Burdescu Dan Dumitru
Sus!