Massiivi ja lingitud loendi erinevus

Autor: Laura McKinney
Loomise Kuupäev: 3 Aprill 2021
Värskenduse Kuupäev: 8 Mai 2024
Anonim
iOS App Development with Swift by Dan Armendariz
Videot: iOS App Development with Swift by Dan Armendariz

Sisu


Suurim erinevus Massiiv ja Lingitud nimekiri arvestades nende struktuuri. Massiivid on indeksipõhine andmestruktuur, kus iga element on seotud indeksiga. Teisest küljest tugineb lingitud nimekiri viited kus iga sõlm koosneb andmetest ning viidetest eelmisele ja järgmisele elemendile.

Põhimõtteliselt on massiiv sarnaste andmeobjektide kogum, mida salvestatakse järjestikustesse mälupesadesse ühise pealkirja või muutuja nime all.

Lingitud loend on küll andmestruktuur, mis sisaldab elementide jada, kus iga element on lingitud järgmise elemendiga. Lingitud loendi elemendis on kaks välja. Üks on andmeväli ja teine ​​on lingi väli, andmeväli sisaldab salvestatava ja töödeldava tegelikku väärtust. Lisaks sisaldab lingi väli lingitud loendis järgmise andmeühiku aadressi. Konkreetse sõlme juurde pääsemiseks kasutatavat aadressi nimetatakse osutiks.


Veel üks oluline erinevus massiivi ja lingitud loendi vahel on see, et massiivil on kindel suurus ja see tuleb eelnevalt deklareerida, kuid lingitud loend ei ole piiratud suurusega ning laienemise ja lepinguga täitmise ajal.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusMassiivLingitud nimekiri
PõhilineSee on kindla arvu andmeühikute järjepidev kogum.See on tellitud komplekt, mis sisaldab muutuvat arvu andmeühikuid.
SuurusTäpsustatud deklaratsiooni ajal.Pole vaja täpsustada; kasvavad ja kahanevad täitmise ajal.
Salvestusruumi eraldamine Elemendi asukoht eraldatakse kompileerimise ajal.Elemendi positsioon määratakse käitusaja jooksul.
Elementide järjekord Salvestatud järjest Salvestatud juhuslikult
Juurdepääs elemendileOtsene või juhuslikult juurdepääsetav, st. Määrake massiivi indeks või alaindeks.Järjestikune juurdepääs, st liikumine kursori abil loendi esimesest sõlmest.
Elemendi sisestamine ja kustutamineAeglaselt, kuna nihutamine on vajalik.Lihtsam, kiire ja tõhus.
Otsimine Binaarne ja lineaarne otsinglineaarne otsing
Vajalik mäluvähem Veel
Mälu kasutamineEbaefektiivneTõhus


Massiivi määratlus

Massiivi määratletakse kindla hulga homogeensete elementide või andmeühikute kogumina. See tähendab, et massiiv võib sisaldada ainult ühte tüüpi andmeid, kas kõiki täisarvu, kõiki ujukomaarvu või kõiki märke. Massiivi deklareerimine on järgmine:
int a;
Kus int määrab andmetüübi või -elementide massiivihoidlad. “A” on massiivi nimi ja nurksulgudes täpsustatud arv on massiivide salvestatavate elementide arv, seda nimetatakse ka massiivi suuruseks või pikkuseks.

Vaatame mõnda mõistet, mida massiivide puhul tuleks meelde jätta:

  • Massiivi üksikutele elementidele pääseb juurde, kirjeldades massiivi nime, millele järgneb indeks või alaindeks (massiivi elemendi asukoha määramine) nurksulgudes. Näiteks massiivi 5. elemendi toomiseks peame kirjutama avalduse a.
  • Igal juhul salvestatakse massiivi elemendid järjestikusesse mälupessa.
  • Massiivi esimese elemendi indeks on null. See tähendab, et esimene ja viimane element täpsustatakse vastavalt a ja a-na.
  • Elementide arv, mida saab massiivis salvestada, st massiivi suurus või pikkus arvutatakse järgmise võrrandi abil:
    (ülemine piir - alumine piir) + 1
    Ülaltoodud massiivi korral oleks see (9-0) + 1 = 10. Kus 0 on massiivi alumine piir ja 9 on massiivi ülemine piir.
  • Massiive saab lugeda või silmuse kaudu kirjutada. Kui loeme ühemõõtmelist massiivi, on massiivi lugemiseks vaja ühte silmust, massiivi kirjutamiseks (nt):
    a. Massiivi lugemiseks
    jaoks (i = 0; i <= 9; i ++)
    {scanf („% d”, & a); }
    b. Massiivi kirjutamiseks
    jaoks (i = 0; i <= 9; i ++)
    {f (“% d”, a); }
  • 2-D massiivi puhul vajaks see kahte silmust ja samamoodi vajaks n-mõõtmeline massiiv n silmuseid.

Massiivides tehtavad toimingud on järgmised:

  1. Massiivi loomine
  2. Massiivi läbimine
  3. Uute elementide lisamine
  4. Vajalike elementide kustutamine.
  5. Elemendi muutmine.
  6. Massiivide liitmine

Näide

Järgmine programm illustreerib massiivi lugemist ja kirjutamist.

# kaasata
# kaasata
tühine pea ()
{
int a, i;
f ("Sisestage massiiv");
jaoks (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Sisestage massiiv");
jaoks (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Lingitud loendi määratlus

Lingitud loend on teatud loetelu üksteisega seotud andmeelementidest. Selles osutab iga element järgmisele elemendile, mis tähistab loogilist järjestamist. Igat elementi nimetatakse sõlmeks, millel on kaks osa.

INFO osa, mis salvestab teavet, ja POINTER, mis osutab järgmisele elemendile. Nagu teate aadressi salvestamiseks, on meil C-s kordumatud andmestruktuurid, mida nimetatakse osutiteks. Seega peab loendi teine ​​väli olema osuti tüüp.

Lingitud loendite tüübid on üksikult ühendatud loend, kahekordselt ühendatud loend, ümmarguse seosega loend, ümmarguse topeltsidemega loend.

Lingitud loendis tehtavad toimingud on järgmised:

  1. Loomine
  2. Läbivad
  3. Sisestamine
  4. Kustutamine
  5. Otsimine
  6. Konkaneerimine
  7. Kuva

Näide

Lingitud loendi loomist illustreerib järgmine fragment:

struktuurisõlm
{
int num;
umbsõlm * järgmine;
}
algus = NULL;
tühine loomine ()
{
typedef struct sõlm NODE;
NODE * p, * q;
char valik;
esimene = NULL;
teha
{
p = (NODE *) malloc (suurus (NODE));
f ("Sisestage andmeüksus n");
scanf ("% d", & p -> num);
if (p == NULL)
{
q = algus;
while (q -> järgmine! = NULL)
{q = q -> järgmine
}
p -> järgmine = q -> järgmine;
q -> = p;
}
muud
{
p -> järgmine = algus;
algus = p;
}
f ("Kas soovite jätkata (sisestage y või n)? n");
scanf ("% c", & valik);
}
while ((valik == y) || (valik == Y));
}

  1. Massiiv on andmestruktuur, mis sisaldab sarnase tüüpi andmeelementide kogumit, samas kui lingitud loendit peetakse mitte-primitiivseks. Andmestruktuur sisaldab korrastamata lingitud elementide kogumit, mida nimetatakse sõlmedeks.
  2. Massiivis kuuluvad elemendid indeksitesse, st kui soovite pääseda neljandasse elementi, peate muutuja nime kirjutama koos indeksiga või nurksulus asuva asukohaga.
    Lingitud loendis peate siiski alustama peast ja töötama lõpuni, kuni jõuate neljanda elementini.
  3. Kui elemendimassiivile juurde pääseb kiiresti, samas kui lingitud loend võtab lineaarset aega, on see üsna aeglasem.
  4. Massiivides sisestamine ja kustutamine kulutavad palju aega. Teisest küljest on nende toimingute teostamine lingitud loendites kiire.
  5. Massiivid on kindla suurusega. Lingitud loendid on seevastu dünaamilised ja paindlikud ning saavad selle suurust laiendada ja vähendada.
  6. Massiivis eraldatakse mälu kompileerimise ajal, lingitud loendis eraldatakse see täitmise või käitusaja jooksul.
  7. Elemente salvestatakse järjestikku massiivides, samal ajal kui suvaliselt lingitud loenditesse.
  8. Mäluvajadus on väiksem, kuna tegelikke andmeid salvestatakse massiivi indeksi sees. Vastupidiselt on täiendavate järgmise ja varasemate viidavate elementide salvestamise tõttu vaja linketud loendites rohkem mälu.
  9. Lisaks on mälu massiivis ebatõhus. Vastupidiselt on mälu kasutamine massiivis efektiivne.

Järeldus

Massiivi- ja lingiloendid on andmestruktuuride tüübid, mis erinevad oma ülesehituse, juurdepääsu- ja manipuleerimismeetodite, mälunõude ja kasutamise osas. Ja neil on selle rakendamisega võrreldes eriline eelis ja puudus. Järelikult saab mõlemat vastavalt vajadusele kasutada.