Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp „Array“ ir „Linked List“

Pagrindinis skirtumas tarp „ Array“ ir „ Linked“ sąrašo priklauso nuo jų struktūros. Array yra rodyklės duomenų struktūra, kurioje kiekvienas elementas yra susietas su indeksu. Kita vertus, susietas sąrašas remiasi nuorodomis, kuriose kiekvienas mazgas susideda iš duomenų ir nuorodų į ankstesnį ir kitą elementą.

Iš esmės masyvas yra panašių duomenų objektų, saugomų nuosekliose atminties vietose, rinkinys pagal bendrą pavadinimą arba kintamąjį.

Nors susietas sąrašas yra duomenų struktūra, kurioje yra elementų, kuriuose kiekvienas elementas yra susietas su sekančiu elementu, seka. Susieto sąrašo elemente yra du laukai. Vienas yra Duomenų laukas, o kitas - nuorodų laukas, Duomenų lauke yra faktinė saugoma ir apdorojama vertė. Be to, nuorodų lauke yra kito susieto sąrašo duomenų elemento adresas. Adresas, naudojamas prieigai prie konkretaus mazgo, yra žinomas kaip rodyklė.

Kitas svarbus skirtumas tarp masyvo ir susieto sąrašo yra tas, kad „Array“ turi fiksuotą dydį ir reikalaujama, kad jis būtų iš anksto paskelbtas, tačiau susietas sąrašas nėra apribotas pagal dydį ir išplėsti bei sudaryti sutartį vykdymo metu.

Palyginimo diagrama

Palyginimo pagrindasArraySusietas sąrašas
PagrindinisTai nuoseklus fiksuotų duomenų elementų skaičius.Tai užsakytas rinkinys, apimantis kintamą skaičių duomenų elementų.
DydisNurodoma deklaracijos metu.Nereikia nurodyti; augti ir mažėti vykdymo metu.
Saugojimo paskirstymasElemento vieta skiriama kompiliavimo metu.Elemento padėtis priskiriama vykdymo metu.
Elementų tvarkaIšsaugota nuosekliaiAtsargiai laikomi
Prieiga prie elementoTiesioginis arba atsitiktinai pasiekiamas, ty nurodykite masyvo indeksą arba indeksą.Iš eilės pasiekiama, ty, „Travers“ pradedant nuo pirmojo sąrašo sąrašo po žymekliu.
Elemento įterpimas ir ištrynimasReikia lėtai, palyginti su perėjimu.Lengviau, greičiau ir efektyviau.
PaieškaBinarinė paieška ir tiesinė paieškatiesinė paieška
Reikalinga atmintismažiauDaugiau
Atminties panaudojimasNeefektyvusEfektyvus

„Array“ apibrėžimas

Masyvas apibrėžiamas kaip tam tikro skaičiaus homogeniškų elementų arba duomenų elementų rinkinys. Tai reiškia, kad masyvas gali būti tik vieno tipo duomenys, visi sveiki skaičiai, visi slankiojo kablelio numeriai arba visi simboliai. Masyvo deklaracija yra tokia:
int a [10];
Kur int nurodo duomenų tipo ar tipo elementų masyvo parduotuves. „A“ yra masyvo pavadinimas, ir kvadratinių skliausteliuose nurodytas skaičius yra elementų, kuriuos masyvas gali saugoti, skaičius, tai taip pat vadinama masyvo dydžiu arba ilgiu.

Pažvelkime į kai kurias sąvokas, kurias reikia prisiminti apie masyvus:

  • Atskirus masyvo elementus galima pasiekti apibūdinant masyvo pavadinimą, po kurio seka indeksas arba indeksas (nustatantis elemento vietą masyve) kvadratinių skliaustų viduje. Pavyzdžiui, norėdami gauti penktą masyvo elementą, turime parašyti pranešimą a [4].
  • Bet kuriuo atveju masyvo elementai bus saugomi nuoseklioje atminties vietoje.
  • Pirmasis masyvo elementas turi nulinį indeksą [0]. Tai reiškia, kad pirmasis ir paskutinis elementai bus atitinkamai nurodyti kaip [0] ir a [9].
  • Elementų, kurie gali būti saugomi masyve, ty masyvo arba jo ilgio, skaičius pateikiamas pagal šią lygtį:
    (viršutinė apatinė riba) + 1
    Pirmiau minėtai matricai būtų (9-0) + 1 = 10. Kur 0 yra apatinė masyvo riba, o 9 - viršutinė masyvo riba.
  • Įrenginius galima skaityti arba rašyti per kilpą. Jei skaitome vieno matmens masyvą, tam reikia vieno ciklo skaitymui ir kitiems matricos rašymui (spausdinimui), pavyzdžiui:
    a. Skaitymo masyvui
    už (i = 0; i <= 9; i ++)
    {scanf („% d“, & a [i]); }
    b. Masyvo rašymui
    už (i = 0; i <= 9; i ++)
    {printf („% d“, a [i]); }
  • 2-D masyvo atveju reikės dviejų kilpų ir panašiai n-matmenų matricai reikės n kilpos.

Operacijų, atliktų masyvuose, yra:

  1. Masyvo kūrimas
  2. Masyvo judėjimas
  3. Naujų elementų įterpimas
  4. Reikiamų elementų ištrynimas.
  5. Elemento modifikavimas.
  6. Masyvų sujungimas

Pavyzdys

Ši programa iliustruoja masyvo skaitymą ir rašymą.

#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 ();
}

Susieto sąrašo apibrėžimas

Susietas sąrašas - tai tam tikrų duomenų elementų, susietų su kitu, sąrašas. Kiekvienas elementas nurodo kitą elementą, kuris reiškia loginį užsakymą. Kiekvienas elementas vadinamas mazgu, turinčiu dvi dalis.

INFO dalis, kurioje saugoma informacija ir POINTER, kuri nurodo kitą elementą. Kaip žinote, kad saugote adresą, turime C unikalią duomenų struktūrą, vadinamą rodykle. Taigi antrasis sąrašo laukas turi būti rodyklės tipas.

Susietų sąrašų tipai yra susietas sąrašas, abipusiai susietas sąrašas, su apykaitomis susietas sąrašas, apvalus dvigubas susietas sąrašas.

Susietame sąraše atlikti veiksmai yra:

  1. Kūrimas
  2. Važiavimas
  3. Įterpimas
  4. Ištrinimas
  5. Paieška
  6. Susiejimas
  7. Ekranas

Pavyzdys

Šis fragmentas iliustruoja susieto sąrašo sukūrimą:

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'));
}

Pagrindiniai skirtumai tarp masyvo ir susieto sąrašo

  1. Masyvas yra duomenų struktūra, kurioje yra panašių tipo duomenų elementų rinkinys, o susietas sąrašas laikomas ne primityvia duomenų struktūra, kurioje yra nereguliuojamų susietų elementų, vadinamų mazgais, rinkinys.
  2. Masyve elementai priklauso indeksams, ty, jei norite patekti į ketvirtąjį elementą, kintamojo pavadinimą turite užrašyti savo indeksu ar vieta kvadratiniame skliaustuose.
    Tačiau susietame sąraše jūs turite pradėti nuo galvos ir dirbti iki tol, kol pasieksite ketvirtąjį elementą.
  3. Nors prieiga prie elementų masyvo yra greita, o susietas sąrašas - linijinis laikas, tai yra gana lėtesnis.
  4. Operacijos, pavyzdžiui, įterpimas ir ištrynimas masyvuose, sunaudoja daug laiko. Kita vertus, šių operacijų vykdymas susietuose sąrašuose yra greitas.
  5. Array yra fiksuoto dydžio. Priešingai, susieti sąrašai yra dinamiški ir lankstūs, jie gali išplėsti ir sutvirtinti jo dydį.
  6. Masyve atmintis priskiriama kompiliavimo metu, o susietame sąraše ji priskiriama vykdymo ar vykdymo metu.
  7. Elementai saugomi nuosekliai matricose, o susieti sąrašai yra saugomi atsitiktinai.
  8. Atminties reikalavimas yra mažesnis, nes faktiniai duomenys yra saugomi masyvo indekse. Kaip ir priešingai, reikia daugiau atminties susietuose sąrašuose dėl papildomų ir ankstesnių nuorodų elementų saugojimo.
  9. Be to, atminties panaudojimas masyve yra neveiksmingas. Atvirkščiai, atminties panaudojimas yra efektyvus masyve.

Išvada

Array ir Linked sąrašai yra duomenų struktūros, kurios skiriasi savo struktūra, prieigos ir manipuliavimo metodais, atminties reikalavimais ir naudojimu, tipai. Ir turi ypatingą pranašumą ir trūkumą, palyginti su jo įgyvendinimu. Todėl vienas iš jų gali būti naudojamas pagal poreikį.

Top