Būtībā masīvs ir līdzīgu datu objektu kopums, kas tiek glabāts secīgās atmiņas vietās ar kopējo virsrakstu vai mainīgo nosaukumu.
Kamēr saistītais saraksts ir datu struktūra, kas satur to elementu secību, kur katrs elements ir saistīts ar nākamo elementu. Saistītā saraksta elementā ir divi lauki. Viens no tiem ir datu lauks, bet otrs ir saites lauks, datu lauks satur faktisko vērtību, kas jāglabā un jāapstrādā. Turklāt saiknes laukā ir iekļauta saistītā saraksta nākamā datu vienuma adrese. Adrese, ko izmanto, lai piekļūtu konkrētam mezglam, ir pazīstama kā rādītājs.
Vēl viena būtiska atšķirība starp masīvu un saistīto sarakstu ir tāda, ka Array ir fiksēts lielums, un tas ir jādeklarē iepriekš, bet sasaistītais saraksts nav ierobežots pēc izmēra un paplašināšanas un līguma izpildes laikā.
Salīdzinājuma diagramma
Salīdzinājuma pamats | Array | Saistīts saraksts |
---|---|---|
Pamata | Tas ir noteikts datu kopu skaits. | Tas ir pasūtīts komplekts, kurā ir mainīgs datu vienību skaits. |
Izmērs | Norādīta deklarācijas laikā. | Nav nepieciešams precizēt; augt un sarukt. |
Glabāšanas piešķiršana | Elementa atrašanās vieta tiek piešķirta kompilēšanas laikā. | Elementa pozīcija tiek piešķirta darbības laikā. |
Elementu secība | Saglabāts secīgi | Saglabāts nejauši |
Piekļuve elementam | Tieša vai nejauša piekļuve, ti, Norādiet masīva indeksu vai indeksu. | Secīgi piekļuvis, ti, virziens, sākot no pirmā mezgla saraksta ar rādītāju. |
Elementa ievietošana un dzēšana | Nepieciešama lēna, salīdzinoši mainīga. | Vieglāk, ātrāk un efektīvāk. |
Meklēšana | Binārā meklēšana un lineārā meklēšana | lineārā meklēšana |
Nepieciešama atmiņa | mazāk | Vairāk |
Atmiņas izmantošana | Neefektīva | Efektīvs |
Array definīcija
Masīvs ir noteikts kā noteikts skaits viendabīgu elementu vai datu vienību. Tas nozīmē, ka masīvs var saturēt tikai viena veida datus, vai nu visus veselos skaitļus, visus peldošo punktu skaitļus vai visas rakstzīmes. Masīva deklarācija ir šāda:
int a [10];
Kur int norāda datu tipu vai tipa elementu masīvu veikalus. “A” ir masīva nosaukums, un kvadrātiekavās norādītais numurs ir to elementu skaits, kurus masīvs var saglabāt, to sauc arī par masīva lielumu vai garumu.
Apskatīsim dažus jēdzienus, kas jāatceras par masīviem:
- Masīva atsevišķos elementus var piekļūt, aprakstot masīva nosaukumu, kam seko indekss vai apakšindekss (nosakot elementa atrašanās vietu masīvā) kvadrātiekavās. Piemēram, lai izgūtu masīva 5. elementu, mums ir jāsagatavo paziņojums a [4].
- Jebkurā gadījumā masīva elementi tiks saglabāti secīgā atmiņas vietā.
- Pirmajam masīva elementam ir nulles indekss [0]. Tas nozīmē, ka pirmais un pēdējais elements tiks attiecīgi norādīti kā [0] un a [9].
- Elementu skaits, ko var saglabāt masīvā, ti, masīva lielums vai tā garums ir šāds vienādojums:
(augšējā robeža no apakšas) + 1
Iepriekš minētajam masīvam būtu (9-0) + 1 = 10. Kur 0 ir masīva apakšējā robeža, un 9 ir matricas augšējā robeža. - Arkas var nolasīt vai rakstīt caur cilpu. Ja mēs lasām vienu dimensiju masīvu, tam ir nepieciešama viena cilpa lasīšanai un cita rakstīšanai (drukāšanai), piemēram:
a. Lai lasītu masīvu
par (i = 0; i <= 9; i ++)
{scanf (“% d”, & a [i]); }
b. Masīva rakstīšanai
par (i = 0; i <= 9; i ++)
{printf (“% d”, a [i]); } - 2-D masīva gadījumā tas prasītu divas cilpas un līdzīgi n-dimensiju masīvam būtu nepieciešamas n cilpas.
Darbības, kas veiktas ar masīviem, ir:
- Masīva veidošana
- Masīva pārvietošana
- Jaunu elementu ievietošana
- Nepieciešamo elementu dzēšana.
- Elementa modifikācija.
- Masīvu apvienošana
Piemērs
Nākamā programma ilustrē masīva lasīšanu un rakstīšanu.
#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 ();
}
Saistītā saraksta definīcija
Saistītais saraksts ir konkrēts saraksts ar dažiem datu elementiem, kas saistīti ar vienu citu. Katrs elements norāda uz nākamo elementu, kas pārstāv loģisko pasūtījumu. Katru elementu sauc par mezglu, kam ir divas daļas.
INFO daļa, kas saglabā informāciju un POINTER, kas norāda uz nākamo elementu. Kā jūs zināt, lai saglabātu adresi, mums ir unikāla datu struktūra C, ko sauc par norādēm. Tāpēc saraksta otrajam laukam jābūt rādītāja tipam.
Saistīto sarakstu veidi ir vienreizēji piesaistītie saraksti, ar dubultu saistīto sarakstu, ar apļveida saistīto sarakstu, apļveida dubultā saite.
Saistītajā sarakstā veiktās darbības ir šādas:
- Radīšana
- Brauciens
- Ievietojums
- Dzēšana
- Meklēšana
- Saskaņošana
- Displejs
Piemērs
Nākamais fragments parāda saistītā saraksta izveidi:
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'));
}
Galvenās atšķirības starp grafiku un saistīto sarakstu
- Masīvs ir datu struktūra satur līdzīgu datu elementu kolekciju, bet Saistīto sarakstu uzskata par ne-primitīvu datu struktūru, kas satur neierobežotu saistītu elementu kopumu, kas pazīstams kā mezgli.
- Masīvā elementi pieder indeksiem, ti, ja jūs vēlaties nokļūt ceturtajā elementā, ir jāraksta mainīgā nosaukums ar savu indeksu vai atrašanās vietu kvadrātiekavās.
Saistītajā sarakstā tomēr ir jāsāk no galvas un jādarbojas, līdz nokļūsiet ceturtajā elementā. - Kaut arī piekļuve elementu masīvam ir ātra, kamēr Saistītais saraksts ir lineārs laiks, tas ir diezgan lēnāks.
- Darbības, piemēram, ievietošana un dzēšana masīvos, patērē daudz laika. No otras puses, šo darbību veikšana Saistītajos sarakstos ir ātra.
- Arraži ir fiksēti. Turpretī Saistītie saraksti ir dinamiski un elastīgi, un tie var paplašināt un samazināt līgumu apjomu.
- Masīvā atmiņa tiek piešķirta kompilēšanas laikā, kamēr Saistītajā sarakstā tas tiek piešķirts izpildes vai izpildīšanas laikā.
- Elementi tiek glabāti secīgi masīvos, bet tas tiek saglabāts nejauši Saistītajos sarakstos.
- Atmiņas prasība ir mazāka, jo faktiskie dati tiek glabāti indeksā masīvā. Pretēji tam ir vajadzīgs vairāk atmiņas sasaistītajos sarakstos sakarā ar papildu nākamo un iepriekšējo atsauces elementu glabāšanu.
- Turklāt atmiņas izmantošana ir neefektīva masīvā. Savukārt atmiņas izmantošana ir efektīva masīvā.
Secinājums
Array un Linked saraksti ir datu struktūru veidi, kas atšķiras pēc to struktūras, piekļuves un manipulācijas metodēm, atmiņas prasībām un izmantošanas. Un tam ir īpaša priekšrocība un trūkumi salīdzinājumā ar tās īstenošanu. Līdz ar to var izmantot vienu no vajadzībām.