Ero taulukon ja linkitetyn luettelon välillä
Sisältö
- Vertailutaulukko
- Määritelmä Array
- Katsotaanpa joitain käsitteitä, jotka on muistettava taulukoista:
- Taulukoissa suoritettavat toimenpiteet ovat:
- esimerkki
- Määritelmä linkitetyt luettelot
- Linkitetyssä luettelossa suoritettavat toimenpiteet ovat:
- esimerkki
- johtopäätös
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.
- Vertailutaulukko
- Määritelmä
- Keskeiset erot
- johtopäätös
Vertailutaulukko
Vertailun perusteet | ryhmä | Linkitetty luettelo |
---|---|---|
perustiedot | Se on kiinteä määrä kiinteää määrää tietokohteita. | Se on tilattu joukko, joka käsittää muuttuvan määrän tietoalkioita. |
Koko | Mää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ääsy | Suoraan 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 poistaminen | Hidas suhteellisesti, koska siirtymistä vaaditaan. | Helpoin, nopea ja tehokas. |
Searching | Binaarihaku ja lineaarinen haku | lineaarinen haku |
Tarvitaan muisti | Vähemmän | Lisää |
Muistin käyttö | Tehoton | Tehokas |
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:
- Ryhmän luominen
- Matriisin läpi
- Uusien elementtien lisääminen
- Vaadittujen osien poistaminen.
- Elementin muokkaaminen.
- 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:
- luominen
- liikkumisesta
- lisäys
- poisto
- Searching
- ketju
- 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));
}
- 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.
- 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. - Vaikka elementtiryhmään pääsy on nopeaa, kun taas linkitetty luettelo vie lineaarista aikaa, niin se on melko vähän hitaampi.
- Lisäykset, kuten lisäys ja poisto matriiseissa, vievät paljon aikaa. Toisaalta näiden toimintojen suorittaminen linkitetyissä luetteloissa on nopeaa.
- Ryhmät ovat kiinteän kokoisia. Sitä vastoin linkitetyt luettelot ovat dynaamisia ja joustavia ja voivat laajentaa ja supistaa kokoaan.
- Ryhmässä muisti osoitetaan käännösaikana, kun taas linkitetyssä luettelossa se allokoidaan suorituksen tai ajon aikana.
- Elementit tallennetaan peräkkäin taulukkoihin, kun taas se tallennetaan satunnaisesti linkitettyihin luetteloihin.
- 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.
- 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.