Rozdiel medzi poliami a prepojenými zoznamami

Rozdiel medzi poliami a prepojenými zoznamami
Rozdiel medzi poliami a prepojenými zoznamami

Video: Rozdiel medzi poliami a prepojenými zoznamami

Video: Rozdiel medzi poliami a prepojenými zoznamami
Video: Ján Drgonec o referende: Na Slovensku existujú slová aj vety o demokracii ale neexistuje demokracia. 2024, November
Anonim

Polia vs prepojené zoznamy

Polia sú najčastejšie používanou dátovou štruktúrou na ukladanie kolekcie prvkov. Väčšina programovacích jazykov poskytuje metódy na jednoduché deklarovanie polí a prístup k prvkom v poliach. Prepojený zoznam, presnejšie single-linked list, je tiež dátová štruktúra, ktorú možno použiť na uloženie kolekcie prvkov. Pozostáva zo sekvencie uzlov a každý uzol má odkaz na nasledujúci uzol v sekvencii.

Na obrázku 1 je znázornený kus kódu, ktorý sa zvyčajne používa na deklarovanie a priraďovanie hodnôt do poľa. Obrázok 2 znázorňuje, ako by pole vyzeralo v pamäti.

Obrázok
Obrázok
Obrázok
Obrázok

Vyššie uvedený kód definuje pole, ktoré môže uložiť 5 celých čísel a pristupuje sa k nim pomocou indexov 0 až 4. Jednou z dôležitých vlastností poľa je, že celé pole je alokované ako jeden blok pamäte a každý prvok dostane svoj vlastný priestor v poli. Akonáhle je pole definované, jeho veľkosť je pevná. Takže ak si nie ste istí veľkosťou poľa v čase kompilácie, museli by ste definovať dostatočne veľké pole, aby ste boli na bezpečnej strane. Väčšinu času však v skutočnosti použijeme menší počet prvkov, ako sme pridelili. Značné množstvo pamäte je teda skutočne premrhané. Na druhej strane, ak „dosť veľké pole“nie je v skutočnosti dostatočne veľké, program spadne.

Prepojený zoznam prideľuje pamäť svojim prvkom oddelene vo svojom vlastnom bloku pamäte a celková štruktúra sa získa spojením týchto prvkov ako článkov v reťazci. Každý prvok v prepojenom zozname má dve polia, ako je znázornené na obrázku 3. Dátové pole obsahuje aktuálne uložené údaje a ďalšie pole obsahuje odkaz na ďalší prvok v reťazci. Prvý prvok prepojeného zoznamu je uložený ako hlavička prepojeného zoznamu.

data ďalší

Obrázok 3: Prvok prepojeného zoznamu

Obrázok
Obrázok
Obrázok
Obrázok

Obrázok 4 zobrazuje prepojený zoznam s tromi prvkami. Každý prvok ukladá svoje údaje a všetky prvky okrem posledného ukladajú odkaz na nasledujúci prvok. Posledný prvok má vo svojom ďalšom poli nulovú hodnotu. K akémukoľvek prvku v zozname je možné pristupovať tak, že začnete od začiatku a budete nasledovať nasledujúci ukazovateľ, kým nesplníte požadovaný prvok.

Aj keď sú polia a prepojené zoznamy podobné v tom zmysle, že sa oba používajú na ukladanie kolekcie prvkov, vznikajú rozdiely v dôsledku stratégií, ktoré používajú na prideľovanie pamäte svojim prvkom. Polia prideľujú pamäť všetkým svojim prvkom ako jeden blok a veľkosť poľa sa musí určiť za behu. To by spôsobilo, že polia by boli neefektívne v situáciách, keď nepoznáte veľkosť poľa v čase kompilácie. Keďže prepojený zoznam prideľuje pamäť svojim prvkom oddelene, bolo by to veľmi efektívne v situáciách, keď nepoznáte veľkosť zoznamu v čase kompilácie. Deklarácia a prístup k prvkom v prepojenom zozname by neboli priame v porovnaní s tým, ako priamo pristupujete k prvkom v poli pomocou jeho indexov.

Odporúča: