O gamă dinamică - studopediya

O matrice a cărei mărime poate fi schimbată în timp ce programul se numește dinamic. Cu alte cuvinte, o gamă dinamică - o structură de date de dimensiuni variabile, care permite în timpul executării programului pentru a adăuga în mod automat și să eliminați elemente. Dimensiunea maximă poate fi determinată printr-o constantă sau determinată în timpul rulării. În primul caz, o gamă dinamică este construit pe baza unei matrice statice, iar al doilea - AC, adică, o dimensiune care este atribuită în timpul rulării. Se întâmplă ca o matrice de lungime variabilă este luată ca o matrice dinamică. Dar de multe ori acest lucru nu este cazul, deoarece dimensiunea celui de al doilea, după cum sa menționat, pot fi schimbate în mod automat, ceea ce nu este valabil și pentru prima. De exemplu, mărimea declarată matrice A. n. unde n - .. variabilă neinițializată, adică la începutul programului, n nu este atribuit nici o valoare. Se presupune că valoarea sa, și odată cu ea dimensiunea de matrice, introduse de către utilizator. Această situație sugerează că A - o serie de lungime variabilă, dar acest lucru nu înseamnă că este în mod necesar dinamic, deși, după cum sa menționat mai sus, acest lucru este posibil.







Punerea în aplicare a unui tablou dinamic simplu bazat pe următoarea manipulare. matrice alocată de dimensiune fixă. Acesta este împărțit în două părți: prima parte magazine matrice elemente dinamice, iar al doilea este un spațiu de rezervă care poate fi folosit în funcție de necesități. O astfel de organizație, puteți adăuga elemente la sfârșitul unei matrice dinamice, precum și a le șterge, și să-l facă în timp constant. În cazul în care matricea este plin (umplut ambele părți ale șirului original), atunci spunem că epuizat dimensiunea fizică; numărul de elemente utilizate pentru conținuturile dinamice ale șirului, este numită o dimensiune logică.







Cele mai multe dintre limbile actuale de programare de nivel înalt a sprijini matrice dinamice. Pentru a lucra cu cele mai recente care au încorporate operatori și funcții, precum și unele limbaje de programare oferă mai multe opțiuni pentru punerea în aplicare a acestora. De exemplu, C ++ pot fi utilizate în acest scop:

· Funcția malloc, calloc, realloc și liber;

Exemplu de creare și matrice dinamic purificare întreg format din 33 elemente:

int * A = malloc (sizeof (int) * 33); // crearea

· Operatorii nou și șterge (acestea pot fi doar o modalitate de a schimba dimensiunea matrice - să-l complet curat);

Exemplu de creare și purificare matrice reală dinamic format din 11 elemente:

float * A = new float [10]; // crearea

șterge [] A; // elimina

Exemplu de creare și matrice dinamic purificare întreg format din 22 elemente:

vector A (22); // crearea

De mai sus, exemple au fost prezentate trei moduri de a crea o gamă dinamică și purificare în C ++. Dar acest lucru nu este toate caracteristicile limbii. De exemplu, clasa vector are un set de metode de accesare a elementelor, adăugarea și eliminarea lor, și așa mai departe. N.

În Pascal matrice dinamic poate fi definit în două moduri. Prima implică utilizarea procedurii noi, iar a doua procedură setlength. În ambele cazuri, prima matrice este declarat:

var <имя массива>: Array de <тип данных>;

După aceea, în unitatea principală utilizând una dintre procedurile:

<имя массива>: = Nou <имя типа>[<значение>]

setlength (<имя массива>, <значение>);

Procedura setlength și noul spațiu de rezervă în memorie pentru variabila dinamică (în acest caz, o gamă dinamică).

O matrice ordinară statică de victorii dinamice în viteză, care este compensată de o funcționalitate îmbunătățită a acestuia din urmă. În general, complexitatea timp a operațiilor de bază asupra elementelor dinamice ale șirului, după cum urmează:

Accesul la un element prin indexul său se realizează în timp constant O (1);

· Introducerea sau elemente de ștergere:

- începutul șirului: O (n) (timp liniar);

- matrice de mijloc: O (n) (timp liniar);

- capăt al șirului: O (1) (în timp constant).