Ero taulukon ja linkitetyn luettelon välillä

Kirjoittaja: Laura McKinney
Luomispäivä: 3 Huhtikuu 2021
Päivityspäivä: 7 Saattaa 2024
Anonim
Ero taulukon ja linkitetyn luettelon välillä - Tekniikka
Ero taulukon ja linkitetyn luettelon välillä - Tekniikka

Sisältö


Suurin ero ryhmä ja Linkitetty luettelo suhteessa niiden rakenteeseen. Ryhmät ovat hakemistopohjainen tietorakenne, jossa kukin elementti liittyy indeksiin. Toisaalta Linked-luettelo perustuu viittaukset jossa jokainen solmu koostuu datasta ja viittauksista edelliseen ja seuraavaan elementtiin.

Periaatteessa taulukko on joukko samanlaisia ​​dataobjekteja, jotka on tallennettu peräkkäisissä muistipaikoissa yhteisen otsikon tai muuttujan nimen alla.

Vaikka linkitetty luettelo on tietorakenne, joka sisältää sekvenssin elementtejä, joissa kukin elementti on linkitetty seuraavaan elementtiin. Linkitetyn luettelon elementissä on kaksi kenttää. Yksi on tietokenttä, ja toinen on linkkikenttä, tietokenttä sisältää tallennettavan ja käsiteltävän todellisen arvon. Lisäksi linkkikentässä on linkitetyn luettelon seuraavan tietoyksikön osoite. Tiettyyn solmuun pääsyyn käytetty osoite tunnetaan osoittimena.


Toinen merkittävä ero taulukon ja linkitetyn luettelon välillä on, että taulukolla on kiinteä koko ja se on ilmoitettava etukäteen, mutta linkitetty luettelo ei ole rajoitettu kokoon ja laajenee ja supistuu toteutuksen aikana.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteetryhmäLinkitetty luettelo
perustiedotSe on kiinteä määrä kiinteää määrää tietokohteita.Se on tilattu joukko, joka käsittää muuttuvan määrän tietoalkioita.
KokoMääritetty ilmoituksen yhteydessä.Ei tarvetta määritellä; kasvaa ja kutistua toteutuksen aikana.
Varastoinnin allokointi Elementin sijainti osoitetaan kokoamisaikana.Elementin sijainti määritetään ajon aikana.
Elementtien järjestys Varastoidaan peräkkäin Tallennetaan satunnaisesti
Elementtiin pääsySuoraan tai satunnaisesti käytettävissä, ts. Määritä taulukkoindeksi tai alaindeksi.Käytetään peräkkäin, ts. Kulkee osoittimen luettelon ensimmäisestä solmusta.
Elementin lisääminen ja poistaminenHidas suhteellisesti, koska siirtymistä vaaditaan.Helpoin, nopea ja tehokas.
Searching Binaarihaku ja lineaarinen hakulineaarinen haku
Tarvitaan muistiVähemmän Lisää
Muistin käyttöTehotonTehokas


Määritelmä Array

Matriisi määritellään joukona tietty määrä homogeenisia elementtejä tai tietoelementtejä. Se tarkoittaa, että taulukko voi sisältää vain yhden tyyppistä dataa, joko kaikki kokonaisluvut, kaikki liukulukujen numerot tai kaikki merkit. Matriisin ilmoitus on seuraava:
int a;
Missä int määrittelee tietotyypin tai tyyppielementit, taulukko tallentaa. “A” on taulukon nimi, ja hakasulkeissa määritetty numero on niiden elementtien lukumäärä, joita taulukko voi tallentaa, tätä kutsutaan myös taulukon kokoksi tai pituudeksi.

Katsotaanpa joitain käsitteitä, jotka on muistettava taulukoista:

  • Matriisin yksittäisiin elementteihin pääsee kuvaamalla matriisin nimi, jota seuraa hakemisto tai alaindeksi (määritetään elementin sijainti taulukossa) hakasulkeissa. Esimerkiksi, jotta voidaan hakea taulukon viides elementti, meidän on kirjoitettava lause a.
  • Joka tapauksessa taulukon elementit tallennetaan peräkkäiseen muistipaikkaan.
  • Matriisin ensimmäisellä elementillä on indeksi nolla. Se tarkoittaa, että ensimmäinen ja viimeinen elementti määritetään vastaavasti a ja.
  • Järjestelmään tallennettavien elementtien lukumäärä, ts. Taulukon koko tai sen pituus annetaan seuraavalla yhtälöllä:
    (yläraja-alaraja) + 1
    Yllä olevalle taulukolle se olisi (9-0) + 1 = 10. Missä 0 on taulukon alaraja ja 9 on taulukon yläraja.
  • Matriisit voidaan lukea tai kirjoittaa silmukan läpi. Jos luemme yhdenulotteisen matriisin, se vaatii yhden silmukan lukemiseen ja toisen matriisin kirjoittamiseen (esimerkiksi):
    a. Matriisin lukemiseen
    varten (i = 0; i <= 9; i ++)
    {scanf (“% d”, & a); }
    b. Matriisin kirjoittamiseen
    varten (i = 0; i <= 9; i ++)
    {f (“% d”, a); }
  • 2-D-taulukon tapauksessa se vaatisi kahta silmukkaa ja vastaavasti n-ulotteinen taulukko tarvitsisi n silmukkaa.

Taulukoissa suoritettavat toimenpiteet ovat:

  1. Ryhmän luominen
  2. Matriisin läpi
  3. Uusien elementtien lisääminen
  4. Vaadittujen osien poistaminen.
  5. Elementin muokkaaminen.
  6. Taulukoiden yhdistäminen

esimerkki

Seuraava ohjelma kuvaa taulukon lukemista ja kirjoittamista.

#sisältää
#sisältää
tyhjä pää ()
{
int a, i;
f ("Syötä taulukko");
varten (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Syötä taulukko");
varten (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
kurkku ();
}

Määritelmä linkitetyt luettelot

Linkitetty luettelo on tietty luettelo joistakin toisiinsa linkitetyistä tietoelementeistä. Tässä jokainen elementti osoittaa seuraavaan elementtiin, joka edustaa loogista järjestystä. Jokaista elementtiä kutsutaan solmuksi, jolla on kaksi osaa.

INFO-osa, joka tallentaa tiedot, ja PISTE, joka osoittaa seuraavaan elementtiin. Kuten tiedät osoitteen tallentamisessa, meillä on ainutlaatuinen tietorakenne C: ssä, nimeltään osoittimet. Siksi luettelon toisen kentän on oltava osoittintyyppi.

Linkitetyt luettelotyypit ovat Yksinkieliset luettelot, Kaksinkertaisesti linkitetyt luettelot, Pyöreästi linkitetyt luettelot, Pyöreät kaksoislinkit.

Linkitetyssä luettelossa suoritettavat toimenpiteet ovat:

  1. luominen
  2. liikkumisesta
  3. lisäys
  4. poisto
  5. Searching
  6. ketju
  7. Näyttö

esimerkki

Seuraava katkelma kuvaa linkitetyn luettelon luomista:

rakenne solmu
{
int num;
stukkisolmu * seuraavaksi;
}
alku = NULL;
tyhjä luominen ()
{
typedef struct node NODE;
NODE * p, * q;
char valinta;
ensimmäinen = NULL;
tehdä
{
p = (NODE *) malloc (koko (NODE));
f ("Syötä tietoyksikkö n");
scanf ("% d", & p -> num);
if (p == NULL)
{
q = alku;
kun taas (q -> seuraava! = NULL)
{q = q -> seuraavaksi
}
p -> seuraava = q -> seuraava;
q -> = p;
}
muu
{
p -> seuraava = alku;
alku = p;
}
f ("Haluatko jatkaa (kirjoita y tai n)? n");
scanf ("% c", & valinta);
}
kun taas ((valinta == y) || (valinta == Y));
}

  1. Taulukko on tietorakenne, joka sisältää kokoelman samantyyppisiä tietoelementtejä, kun taas linkitetyn luettelon katsotaan olevan ei-primitiivinen tietorakenne, joka sisältää kokoelman järjestämättömiä linkitettyjä elementtejä, joita kutsutaan solmuiksi.
  2. Taulukossa elementit kuuluvat hakemistoihin, ts. Jos haluat päästä neljänteen elementtiin, sinun on kirjoitettava muuttujan nimi indeksin tai sijainnin kanssa hakasulkeessa.
    Yhdistetyssä luettelossa on kuitenkin aloitettava päästä ja työskenneltävä läpi, kunnes pääset neljänteen elementtiin.
  3. Vaikka elementtiryhmään pääsy on nopeaa, kun taas linkitetty luettelo vie lineaarista aikaa, niin se on melko vähän hitaampi.
  4. Lisäykset, kuten lisäys ja poisto matriiseissa, vievät paljon aikaa. Toisaalta näiden toimintojen suorittaminen linkitetyissä luetteloissa on nopeaa.
  5. Ryhmät ovat kiinteän kokoisia. Sitä vastoin linkitetyt luettelot ovat dynaamisia ja joustavia ja voivat laajentaa ja supistaa kokoaan.
  6. Ryhmässä muisti osoitetaan käännösaikana, kun taas linkitetyssä luettelossa se allokoidaan suorituksen tai ajon aikana.
  7. Elementit tallennetaan peräkkäin taulukkoihin, kun taas se tallennetaan satunnaisesti linkitettyihin luetteloihin.
  8. Muistin tarve on vähemmän johtuen siitä, että tosiasiallinen data on tallennettu taulukon hakemistoon. Toisin kuin linkitetyissä luetteloissa, tarvitaan lisää muistia seuraavien ja aikaisempien viiteelementtien lisäämisen vuoksi.
  9. Lisäksi muistin käyttö on tehoton taulukossa. Sitä vastoin muistin käyttö on tehokasta taulukossa.

johtopäätös

Matriisi- ja linkitetyt luettelot ovat tyyppisiä tietorakenteita, jotka eroavat toisistaan ​​rakenteeltaan, käyttö- ja käsittelymenetelmillä, muistin vaatimuksilla ja käytöllä. Ja sillä on erityinen etu ja haitta sen toteuttamiseen nähden. Näin ollen kumpaakin voidaan käyttää tarpeen mukaan.