![](http://gadget-info.com/img/difference-between/878/difference-between-array.jpg)
Pole je v podstate súbor podobných dátových objektov uložených v polohách sekvenčnej pamäte pod spoločnou hlavičkou alebo názvom premennej.
Zatiaľ čo prepojený zoznam je dátová štruktúra, ktorá obsahuje sekvenciu prvkov, kde každý prvok je prepojený s jeho ďalším prvkom. V prvku prepojeného zoznamu sú dve polia. Jedným z nich je údajové pole a iné pole odkazu. Údajové pole obsahuje skutočnú hodnotu, ktorá sa má uložiť a spracovať. Okrem toho pole odkazu obsahuje adresu nasledujúcej údajovej položky v prepojenom zozname. Adresa použitá na prístup k určitému uzlu je známa ako ukazovateľ.
Ďalším významným rozdielom medzi poľom a prepojeným zoznamom je to, že Array má pevnú veľkosť a vyžaduje sa, aby bol deklarovaný ako predtým, ale Linked List nie je obmedzený na veľkosť a rozširovať a kontrahovať počas vykonávania.
Porovnávacia tabuľka
Základ pre porovnanie | rad | Prepojený zoznam |
---|---|---|
základné | Ide o konzistentnú sadu pevného počtu dátových položiek. | Ide o objednanú sadu obsahujúcu premenlivý počet dátových položiek. |
veľkosť | Špecifikované počas vyhlásenia. | Nie je potrebné špecifikovať; rast a zmenšovanie počas vykonávania. |
Uloženie úložiska | Umiestnenie prvku je priradené počas kompilácie. | Položka prvku je priradená počas doby spustenia. |
Poradie prvkov | Uložené postupne | Uložené náhodne |
Prístup k prvku | Priamy alebo náhodný prístup, tj Zadajte index alebo index. | Sekvenčne prístupný, tj traverz začína od prvého uzla v zozname ukazovateľom. |
Vloženie a odstránenie prvku | Pomalá relatívna zmena je potrebná. | Jednoduchšie, rýchlejšie a efektívnejšie. |
vyhľadávanie | Binárne vyhľadávanie a lineárne vyhľadávanie | lineárne vyhľadávanie |
Požadovaná pamäť | menej | viac |
Využitie pamäte | neúčinný | účinný |
Definícia poľa
Pole je definované ako súbor určitého počtu homogénnych prvkov alebo dátových položiek. Znamená to, že pole môže obsahovať iba jeden typ údajov, buď celé čísla, všetky čísla s pohyblivou čiarkou alebo všetky znaky. Vyhlásenie poľa je nasledovné:
int a [10];
Kde int špecifikuje dátový typ alebo typy prvkov ukladá pole. "A" je názov poľa a číslo špecifikované vnútri hranatých zátvoriek je počet prvkov, ktoré pole môže uložiť, toto sa tiež nazýva veľkosť alebo dĺžka poľa.
![](http://gadget-info.com/img/difference-between/878/difference-between-array-2.jpg)
Pozrime sa na niektoré pojmy, ktoré sa majú pamätať na poli:
- Jednotlivé prvky poľa môžu byť prístupné opisom názvu poľa, po ktorom nasleduje index alebo index (určujúci umiestnenie prvku v poli) vnútri hranatých zátvoriek. Napríklad, ak chceme načítať 5. prvok poľa, musíme napísať vyhlásenie a [4].
- V každom prípade budú prvky poľa uložené v po sebe idúcom mieste pamäte.
- Prvý prvok poľa má index nula [0]. Znamená to, že prvý a posledný prvok bude špecifikovaný ako [0] a [9].
- Počet prvkov, ktoré môžu byť uložené v poli, tj veľkosť poľa alebo jeho dĺžka, je daná nasledujúcou rovnicou:
(horná hranica - dolná hranica) + 1
Pre vyššie uvedené pole by bolo (9-0) + 1 = 10. Kde 0 je dolná hranica poľa a 9 je horná hranica poľa. - Polia môžu byť čítané alebo zapísané cez slučku. Ak čítame jednorozmerné pole, vyžaduje jednu slučku na čítanie a inú pre písanie (tlač) poľa, napríklad:
a. Pre čítanie poľa
pre (i = 0; i <= 9; i ++)
{scanf ("% d", & a [i]); }
b. Pri písaní poľa
pre (i = 0; i <= 9; i ++)
{printf ("% d", a [i]); } - V prípade 2-D poľa by to vyžadovalo dve slučky a podobne n-rozmerné pole by potrebovalo n slučky.
Operácie vykonávané na poli sú:
- Vytvorenie poľa
- Prechod po poli
- Vloženie nových prvkov
- Vymazanie požadovaných prvkov.
- Úprava prvku.
- Zlúčenie polí
príklad
Nasledujúci program znázorňuje čítanie a zápis poľa.
#include
#include
void main ()
{
int a[10], i;
printf("Enter the array");
for ( i= 0; i <= 9; i++)
{
scanf ( "%d", &a[ i ] ) ;
}
printf( "Enter the array" );
for (i = 0 ; i <= 9 ; i++)
{
printf ( "%d\n", a[ i ] ) ;
}
getch ();
}
Definícia prepojeného zoznamu
Prepojený zoznam je konkrétny zoznam niektorých dátových prvkov prepojených s iným. V tomto každom prvku smeruje k ďalšiemu prvku, ktorý predstavuje logické usporiadanie. Každý prvok sa nazýva uzol, ktorý má dve časti.
INFO časť, ktorá ukladá informácie a POINTER, ktoré ukazujú na ďalší prvok. Ako viete pri ukladaní adresy, máme v C nazývané ukazovatele jedinečné dátové štruktúry. Preto druhé pole zoznamu musí byť typ ukazovateľa.
Typy prepojených zoznamov sú zoznamy s jednoduchým prepojením, zoznam s dvojitým prepojením, zoznam s okrúhlym prepojením, zoznam s dvojitým prepojením.
![](http://gadget-info.com/img/difference-between/878/difference-between-array-3.jpg)
Operácie vykonávané na prepojenom zozname sú:
- stvorenia
- kríženie
- vloženie
- vymazanie
- vyhľadávanie
- zreťazenie
- zobraziť
príklad
Nasledujúci úryvok ilustruje vytvorenie prepojeného zoznamu:
struct node
{
int num;
stuct node *next;
}
start = NULL;
void create()
{
typedef struct node NODE;
NODE *p, *q;
char choice;
first = NULL;
do
{
p = (NODE *) malloc (sizeof (NODE));
printf ("Enter the data item\n");
scanf ("%d", & p -> num);
if (p == NULL)
{
q = start;
while (q -> next ! = NULL)
{ q = q -> next
}
p -> next = q -> next;
q -> = p;
}
else
{
p -> next = start;
start = p;
}
printf ("Do you want to continue (type y or n) ? \n");
scanf ("%c", &choice) ;
}
while ((choice == 'y') || (choice == 'Y'));
}
Kľúčové rozdiely medzi poľom a prepojeným zoznamom
- Pole je dátová štruktúra obsahuje kolekciu podobných dátových prvkov typu, zatiaľ čo prepojený zoznam sa považuje za primitívnu dátovú štruktúru, ktorá obsahuje súbor neusporiadaných prepojených prvkov známych ako uzly.
- V poli pole elementy patria indexy, tj ak sa chcete dostať do štvrtého prvku, musíte napísať názov premennej s jeho indexom alebo umiestnením v rámci štvorcového závorky.
V prepojenom zozname však musíte začať od hlavy a pracovať si až dovtedy, kým sa nedostanete k štvrtému prvku. - Prístup k prvku pole je rýchly, zatiaľ čo prepojený zoznam má lineárny čas, takže je pomerne pomalší.
- Operácie ako vloženie a vymazávanie v poliach spotrebúvajú veľa času. Na druhej strane výkon týchto operácií v prepojených zoznamoch je rýchly.
- Polia majú pevnú veľkosť. Naproti tomu prepojené zoznamy sú dynamické a flexibilné a môžu rozšíriť a zmenšiť svoju veľkosť.
- V poli je priradená pamäť počas kompilácie, kým je v prepojenom zozname priradená počas vykonávania alebo spustenia.
- Prvky sa ukladajú postupne do polí, pričom sú náhodne uložené v prepojených zoznamoch.
- Požiadavka pamäte je menšia v dôsledku skutočných údajov uložených v indexe v poli. V porovnaní s tým existuje potreba väčšej pamäte v prepojených zoznamoch v dôsledku ukladania ďalších nasledujúcich a predchádzajúcich referenčných prvkov.
- Okrem toho je využitie pamäte v poli neúčinné. Naopak, využitie pamäte je účinné v poli.
záver
Pole a prepojené zoznamy sú typy dátových štruktúr, ktoré sa líšia v štruktúre, prístupových a manipulačných metódach, požiadavkách na pamäť a využití. A majú mimoriadnu výhodu a nevýhodu vo svojej implementácii. V dôsledku toho môže byť jeden použitý podľa potreby.