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 pagrindas | Array | Susietas sąrašas |
---|---|---|
Pagrindinis | Tai nuoseklus fiksuotų duomenų elementų skaičius. | Tai užsakytas rinkinys, apimantis kintamą skaičių duomenų elementų. |
Dydis | Nurodoma deklaracijos metu. | Nereikia nurodyti; augti ir mažėti vykdymo metu. |
Saugojimo paskirstymas | Elemento vieta skiriama kompiliavimo metu. | Elemento padėtis priskiriama vykdymo metu. |
Elementų tvarka | Išsaugota nuosekliai | Atsargiai laikomi |
Prieiga prie elemento | Tiesioginis 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štrynimas | Reikia lėtai, palyginti su perėjimu. | Lengviau, greičiau ir efektyviau. |
Paieška | Binarinė paieška ir tiesinė paieška | tiesinė paieška |
Reikalinga atmintis | mažiau | Daugiau |
Atminties panaudojimas | Neefektyvus | Efektyvus |
„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:
- Masyvo kūrimas
- Masyvo judėjimas
- Naujų elementų įterpimas
- Reikiamų elementų ištrynimas.
- Elemento modifikavimas.
- 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:
- Kūrimas
- Važiavimas
- Įterpimas
- Ištrinimas
- Paieška
- Susiejimas
- 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
- 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.
- 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ą. - Nors prieiga prie elementų masyvo yra greita, o susietas sąrašas - linijinis laikas, tai yra gana lėtesnis.
- Operacijos, pavyzdžiui, įterpimas ir ištrynimas masyvuose, sunaudoja daug laiko. Kita vertus, šių operacijų vykdymas susietuose sąrašuose yra greitas.
- 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į.
- Masyve atmintis priskiriama kompiliavimo metu, o susietame sąraše ji priskiriama vykdymo ar vykdymo metu.
- Elementai saugomi nuosekliai matricose, o susieti sąrašai yra saugomi atsitiktinai.
- 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.
- 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į.