Forskjell mellom matrise og koblet liste

Forfatter: Laura McKinney
Opprettelsesdato: 3 April 2021
Oppdater Dato: 5 Kan 2024
Anonim
Few people know these SECRETS with the INDICATOR SCREWDRIVER! Useful tips and tricks!
Video: Few people know these SECRETS with the INDICATOR SCREWDRIVER! Useful tips and tricks!

Innhold


Den største forskjellen mellom Array og Koblet liste med hensyn til strukturen deres. Arrays er indeksbasert datastruktur hvor hvert element assosiert med en indeks. På den annen side er lenket liste avhengig av referanser hvor hver node består av dataene og referansene til forrige og neste element.

I utgangspunktet er en matrise et sett med lignende dataobjekter som er lagret i sekvensielle minneplasser under en felles overskrift eller et variabelt navn.

Mens en koblet liste er en datastruktur som inneholder en sekvens av elementene der hvert element er knyttet til det neste elementet. Det er to felt i et element i koblet liste. Det ene er Datafelt, og det andre er lenkefelt, Datafelt inneholder den faktiske verdien som skal lagres og behandles. Videre har lenkefeltet adressen til neste dataelement i den lenket listen. Adressen som brukes for å få tilgang til en bestemt nod er kjent som en peker.


En annen betydelig forskjell mellom en matrise og koblet liste er at Array har en fast størrelse og kreves erklært før, men Linked List er ikke begrenset til størrelse og utvidelse og kontrakt under utførelse.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningArrayKoblet liste
grunn~~POS=TRUNCDet er et konsistent sett med et fast antall dataelementer.Det er et ordnet sett som inneholder et variabelt antall dataelementer.
StørrelseSpesifisert under erklæring.Ingen grunn til å spesifisere; vokse og krympe under utførelse.
Lagringstildeling Elementplassering tildeles under kompileringstiden.Elementposisjon tildeles under kjøretid.
Elementenes rekkefølge Lagres fortløpende Lagres tilfeldig
Få tilgang til elementetDirekte eller tilfeldig tilgang, dvs. spesifiser matriseindeksen eller abonnementet.Sekvensiell tilgang, dvs. Traverse som starter fra den første noden på listen av pekeren.
Innføring og sletting av elementSakte relativt ettersom skifting er nødvendig.Enklere, raskt og effektivt.
Søker Binærsøk og lineært søklineært søk
Minne krevesmindre Mer
MinneutnyttelseineffektivEffektiv


Definisjon av Array

En matrise er definert som et sett med et bestemt antall homogene elementer eller dataelementer. Det betyr at en matrise kan inneholde bare en type data, enten alle heltall, alle flytende tall eller alle tegn. Erklæring om en matrise er som følger:
int a;
Hvor int spesifiserer datatype eller typeelementer array lagre. "A" er navnet på en matrise, og tallet som er spesifisert i de firkantede parentesene er antall elementer en matrise kan lagre, dette kalles også størrelse eller lengde på matrisen.

La oss se på noen av konseptene som skal huskes om matriser:

  • De enkelte elementene i en matrise kan nås ved å beskrive navnet på matrisen, etterfulgt av indeks eller subscript (bestemme plasseringen av elementet i matrisen) inne i de firkantede parentesene. For å hente det femte elementet i matrisen, må vi for eksempel skrive en uttalelse a.
  • I alle fall vil elementene i en matrise lagres i en påfølgende minneplassering.
  • Det aller første elementet i matrisen har indeks null. Det betyr at det første og det siste elementet vil bli spesifisert som henholdsvis en og en.
  • Antall elementer som kan lagres i en matrise, dvs. størrelsen på en matrise eller dens lengde er gitt ved følgende ligning:
    (øvre grense-nedre grense) + 1
    For den ovennevnte matrisen vil det være (9-0) + 1 = 10. Hvor 0 er den nedre grensen av arrayen, og 9 er den øvre grensen av arrayen.
  • Arrays kan leses eller skrives gjennom løkken. Hvis vi leser den endimensjonale matrisen, krever den en loop for lesing og annen for å skrive (ing) matrisen, for eksempel:
    en. For å lese en matrise
    for (i = 0; i <= 9; i ++)
    {scanf ("% d", & a); }
    b. For å skrive en matrise
    for (i = 0; i <= 9; i ++)
    {f (“% d”, a); }
  • Når det gjelder en 2-D-matrise, vil den kreve to løkker og på samme måte n-dimensjonal matrise ville trenge n løkker.

Operasjoner utført på matriser er:

  1. Oppretting av matrise
  2. Krysser over en rekke
  3. Innføring av nye elementer
  4. Sletting av nødvendige elementer.
  5. Endring av et element.
  6. Sammenslåing av matriser

Eksempel

Følgende program illustrerer lesing og skriving av matrisen.

#inkludere
#inkludere
ugyldig hoved ()
{
int a, i;
f ("Angi matrisen");
for (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Angi matrisen");
for (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Definisjon av koblet liste

Koblet liste er en spesiell liste over noen dataelementer knyttet til hverandre. I dette peker hvert element på det neste elementet som representerer den logiske rekkefølgen. Hvert element kalles en node, som har to deler.

INFO-del som lagrer informasjonen og POINTER som peker til neste element. Som du vet for lagring av adresse, har vi en unik datastruktur i C kalt pekere. Derfor må det andre feltet i listen være en pekertype.

Typer koblede lister er singellinket liste, dobbelt lenket liste, sirkulær koblet liste, sirkulær dobbel lenket liste.

Operasjoner utført på Linked List er:

  1. Opprettelse
  2. traversering
  3. Innsetting
  4. sletting
  5. Søker
  6. sammenkjeding
  7. Vise

Eksempel

Følgende utdrag illustrerer opprettelsen av en koblet liste:

strukturnode
{
int num;
stuct node * neste;
}
start = NULL;
void create ()
{
typedef struct node NODE;
NODE * p, * q;
røye valg;
først = NULL;
gjøre
{
p = (NODE *) malloc (sizeof (NODE));
f ("Skriv inn dataelementet n");
scanf ("% d", & p -> num);
if (p == NULL)
{
q = start;
mens (q -> neste! = NULL)
{q = q -> neste
}
p -> neste = q -> neste;
q -> = p;
}
ellers
{
p -> neste = start;
start = p;
}
f ("Vil du fortsette (skriv y eller n)? n");
scanf ("% c", & valg);
}
mens ((valg == y) || (valg == Y));
}

  1. En matrise er datastrukturen inneholder en samling av dataelementer av lignende type, mens den tilknyttede listen anses som ikke-primitiv datastruktur inneholder en samling uordnede koblede elementer kjent som noder.
  2. I matrisen tilhører elementene indekser, dvs. hvis du vil komme inn i det fjerde elementet, må du skrive variabelnavnet med indeksen eller plasseringen i den firkantede beslaget.
    I en lenket liste, men du må starte fra hodet og jobbe deg gjennom til du kommer til det fjerde elementet.
  3. Selv om det er raskt å få tilgang til en elementmatrise mens koblet liste tar lineær tid, er det ganske tregere.
  4. Operasjoner som innsetting og sletting i matriser bruker mye tid. På den annen side er ytelsen til disse operasjonene i koblede lister raskt.
  5. Arrays er av fast størrelse. I kontrast er koblede lister dynamiske og fleksible og kan utvide og trekke sammen størrelsen.
  6. I en matrise tilordnes minne under kompileringstiden, mens det i en koblet liste blir tildelt under utførelse eller løpetid.
  7. Element lagres fortløpende i matriser, mens de lagres tilfeldig i koblede lister.
  8. Kravet til minne skyldes mindre at faktiske data lagres i indeksen i matrisen. I motsetning er det behov for mer minne i koblede lister på grunn av lagring av flere neste og forrige referanseelementer.
  9. I tillegg er minneutnyttelse ineffektiv i matrisen. Motsatt er minneutnyttelse effektiv i matrisen.

Konklusjon

Array og koblede lister er typene datastrukturer som er forskjellige i struktur, tilgang og manipulasjonsmetoder, minnekrav og utnyttelse. Og har spesiell fordel og ulempe i forhold til implementeringen. Følgelig kan en av dem brukes etter behov.