Skirtumas tarp masyvo ir susieto sąrašo

Autorius: Laura McKinney
Kūrybos Data: 3 Balandis 2021
Atnaujinimo Data: 7 Gegužė 2024
Anonim
Array vs. ArrayList in Java Tutorial - What’s The Difference?
Video.: Array vs. ArrayList in Java Tutorial - What’s The Difference?

Turinys


Pagrindinis skirtumas tarp Masyvas ir Susietas sąrašas atsižvelgiant į jų struktūrą. Masyvai yra rodyklės pagrindu duomenų struktūra, kai kiekvienas elementas susijęs su rodykle. Kita vertus, susietų sąrašas remiasi nuorodos kur kiekvienas mazgas susideda iš duomenų ir nuorodų į ankstesnį ir kitą elementą.

Iš esmės masyvas yra panašių duomenų objektų, saugomų nuosekliose atminties vietose, bendroje antraštėje arba kintamojo pavadinime, rinkinys.

Nors susietas sąrašas yra duomenų struktūra, kurioje yra elementų seka, kur kiekvienas elementas yra susietas su kitu elementu. Susieto sąrašo elemente yra du laukai. Vienas iš jų yra Duomenų laukas, o kitas yra nuorodų laukas. Duomenų lauke yra tikroji saugotina ir apdorojama vertė. Be to, nuorodos lauke pateikiamas kito susieto sąrašo duomenų elemento adresas. Adresas, naudojamas norint pasiekti tam tikrą mazgą, yra žinomas kaip žymiklis.

Kitas reikšmingas skirtumas tarp masyvo ir susieto sąrašo yra tas, kad masyvo dydis yra fiksuotas ir jis turi būti deklaruotas anksčiau, tačiau susietų sąrašas nėra ribojamas dydžiu, o vykdymo metu jis plečiasi ir susitraukia.


  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasMasyvasSusietas sąrašas
PagrindinisTai yra pastovus fiksuoto skaičiaus duomenų elementų rinkinys.Tai yra užsakytas rinkinys, kurį sudaro kintamas duomenų elementų skaičius.
DydisNurodyta deklaravimo metu.Nereikia nurodyti; augti ir trauktis vykdymo metu.
Saugyklos paskirstymas Elemento vieta paskirta kompiliavimo metu.Elemento padėtis nustatoma vykdymo metu.
Elementų tvarka Saugoma iš eilės Saugoma atsitiktine tvarka
Prieiga prie elementoTiesiogiai arba atsitiktinai pasiekiama, t.y., nurodykite masyvo rodyklę arba indeksą.Eilės tvarka pasiekiama, t. Y. Pereinama nuo žymeklio pradedant nuo pirmo sąrašo mazgo.
Elemento įdėjimas ir ištrynimasPalikite lėtai, nes reikia perjungti.Lengviau, greitai ir efektyviai.
Ieškoma Dvejetainė ir linijinė paieškalinijinė paieška
Reikia atmintiesmažiau Daugiau
Atminties panaudojimasNeveiksmingasEfektyvus


Masyvo apibrėžimas

Masyvas yra apibrėžtas kaip tam tikro skaičiaus vienarūšių elementų ar duomenų elementų rinkinys. Tai reiškia, kad masyve gali būti tik vieno tipo duomenys - visi sveikieji skaičiai, visi slankiojo kablelio skaičiai arba visi simboliai. Masyvo deklaracija yra tokia:
int a;
Kur int nurodo duomenų tipą arba tipo elementus, masyvo saugyklos. „A“ yra masyvo pavadinimas, o skliausteliuose nurodytas skaičius yra elementų, kuriuos masyvas gali laikyti, skaičius, tai dar vadinama masyvo dydžiu ar ilgiu.

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

  • Atskiri masyvo elementai gali būti pasiekiami apibūdinant masyvo pavadinimą, po kurio pateikiamas indeksas arba indeksas (nustatant elemento vietą masyve) laužtiniuose skliaustuose. Pvz., Norėdami gauti 5-ąjį masyvo elementą, turime parašyti teiginį a.
  • Bet kokiu atveju masyvo elementai bus saugomi eilės atmintyje.
  • Pirmojo masyvo elemento indeksas yra lygus nuliui. Tai reiškia, kad pirmasis ir paskutinis elementai bus nurodyti atitinkamai ir.
  • Elementų, kurie gali būti saugomi masyve, skaičius, ty masyvo dydis ar jo ilgis pateikiami pagal šią lygtį:
    (viršutinė riba - apatinė riba) + 1
    Aukščiau pateiktam masyvui jis būtų (9-0) + 1 = 10. Kur 0 yra apatinė masyvo riba, o 9 yra viršutinė masyvo riba.
  • Masyvus galima perskaityti arba parašyti per kilpą. Jei skaitome vienmatį masyvą, reikia vienos kilpos skaitymui, o kitos - masyvui užrašyti (pvz.):
    a. Skirta masyvo skaitymui
    už (i = 0; i <= 9; i ++)
    {scanf („% d“, & a); }
    b. Už masyvo rašymą
    už (i = 0; i <= 9; i ++)
    {f („% d“, a); }
  • 2-D matricos atveju jai prireiktų dviejų kilpų, o n-matmenų matricai - n.

Masyvuose atliekamos šios operacijos:

  1. Masyvo sukūrimas
  2. Apvažiuoja masyvą
  3. Naujų elementų įdėjimas
  4. Būtinų elementų išbraukimas.
  5. Elemento modifikavimas.
  6. Masyvų sujungimas

Pavyzdys

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

# įtraukti
# įtraukti
tuščias pagrindinis ()
{
int a, i;
f („Įveskite masyvą“);
už (i = 0; i <= 9; i ++)
{
„scanf“ („% d“, & a);
}
f („Įveskite masyvą“);
už (i = 0; i <= 9; i ++)
{
f („% d n“, a);
}
getch ();
}

Susieto sąrašo apibrėžimas

Susietas sąrašas yra tam tikras duomenų elementų, susietų vienas su kitu, sąrašas. Šiame elemente kiekvienas elementas nukreiptas į kitą elementą, kuris apibūdina loginę tvarką. Kiekvienas elementas vadinamas mazgu, kurį sudaro dvi dalys.

INFO dalis, kurioje kaupiama informacija, ir TAŠKAS, kuris nurodo kitą elementą. Kaip žinote, kaip saugoti adresą, mes turime unikalią duomenų struktūrą C, vadinamą rodyklėmis. Taigi antrasis sąrašo laukas turi būti rodyklės tipo.

Susietų sąrašų tipai yra atskirai susietų sąrašą, dvigubai susietų sąrašą, apskrito susietų sąrašą, apskrito dvigubai susieti sąrašą.

Susietojo sąrašo operacijos yra šios:

  1. Kūryba
  2. Apvažiavimas
  3. Įterpimas
  4. Ištrynimas
  5. Ieškoma
  6. Susikaupimas
  7. Ekranas

Pavyzdys

Šis fragmentas iliustruoja susieto sąrašo sudarymą:

struktūros mazgas
{
int num;
įstrigęs mazgas * šalia;
}
pradžia = NULL;
negaliojanti sukurti ()
{
„typedef“ struktūros mazgas NODE;
NODAS * p, * q;
char pasirinkimas;
pirmas = NULL;
daryti
{
p = (NODE *) malloc (dydis (NODE));
f ("Įveskite duomenų elementą n");
„scanf“ („% d“, & p -> num);
if (p == NULL)
{
q = pradžia;
tuo tarpu (q -> kitas! = NULL)
{q = q -> kitas
}
p -> kitas = q -> kitas;
q -> = p;
}
Kitas
{
p -> kitas = pradžia;
pradžia = p;
}
f ("Ar norite tęsti (įveskite y arba n)? n");
„scanf“ („% c“, & pasirinkimas);
}
tuo tarpu ((pasirinkimas == y) || (pasirinkimas == y));
}

  1. Masyvas - tai duomenų struktūroje yra panašaus tipo duomenų elementų rinkinys, o susietų sąrašas laikomas neprimityviu duomenų struktūroje yra nesuderintų susietų elementų, vadinamų mazgais, rinkinys.
  2. Masyve elementai priklauso rodyklėms, t. Y. Jei norite patekti į ketvirtąjį elementą, turite parašyti kintamojo pavadinimą su jo rodykle arba vieta laužtiniame skliauste.
    Susietame sąraše jūs turite pradėti nuo galvos ir dirbti savo kelią, kol pateksite į ketvirtą elementą.
  3. Nors prieiga prie elementų masyvo yra greita, o susietų sąrašas užima linijinį laiką, tačiau jis yra šiek tiek lėtesnis.
  4. Tokios operacijos kaip įterpimas ir ištrynimas masyvuose užima daug laiko. Kita vertus, šias operacijas „Linked“ sąrašuose atlieka greitai.
  5. Masyvai yra fiksuoto dydžio. Priešingai, susieti sąrašai yra dinamiški ir lankstūs ir gali išplėsti ir sumažinti jo dydį.
  6. Masyve atmintis skiriama kompiliavimo metu, o Susietų sąraše ji paskirstoma vykdymo ar vykdymo metu.
  7. Elementai iš eilės saugomi masyvuose, tuo tarpu atsitiktine tvarka - „Susietų“ sąrašuose.
  8. Atminties poreikis yra mažesnis dėl to, kad faktiniai duomenys yra saugomi rodyklės masyve. Priešingai, reikia daugiau atminties susietuose sąrašuose, nes saugomi papildomi kiti ir ankstesni nuorodų elementai.
  9. Be to, atminties panaudojimas masyve neefektyvus. Atvirkščiai, atmintyje masyvas naudojamas efektyviai.

Išvada

Masyvo ir susietų sąrašai yra duomenų struktūrų tipai, kurie skiriasi savo struktūra, prieigos ir manipuliavimo metodais, atminties poreikiu ir naudojimu. Ir turi ypatingą pranašumą ir trūkumus, palyginti su jo įgyvendinimu. Taigi bet kurį iš jų galima naudoti pagal poreikį.