I utgangspunktet er en matrise et sett med lignende dataobjekter lagret i sekvensielle minnesteder 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 av koblet liste. En er datafelt og andre er lenkefelt, datafelt inneholder den faktiske verdien som skal lagres og behandles. Videre inneholder lenkefeltet adressen til neste datapost i den koblede listen. Adressen som brukes til å få tilgang til en bestemt node er kjent som en peker.
En annen signifikant forskjell mellom en array og en koblet liste er at Array har en fast størrelse og kreves å bli erklært tidligere, men Linked List er ikke begrenset til størrelse og utvidet og kontrakt under utførelse.
Sammenligningstabel
Grunnlag for sammenligning | Array | Tilknyttet liste |
---|---|---|
grunn~~POS=TRUNC | Det er et konsekvent sett med et fast antall dataelementer. | Det er et bestilt sett bestående av et variabelt antall dataposter. |
Størrelse | Spesifisert under erklæring. | Du trenger ikke å spesifisere; vokse og krympe under utførelse. |
Lagertildeling | Elementplassering er allokert under kompileringstid. | Element posisjon er tildelt under kjøretid. |
Bestilling av elementene | Lagret etter hvert | Lagret tilfeldig |
Tilgang til elementet | Direkte eller tilfeldig tilgang, dvs. Angi arrayindeksen eller abonnementet. | Sekvensiell tilgang, dvs. Traverse starter fra den første noden i listen med pekeren. |
Innsetting og sletting av element | Sakte relativt som skifting er nødvendig. | Lettere, rask og effektiv. |
Søker | Binært søk og lineært søk | lineær søk |
Minne nødvendig | mindre | Mer |
Minneutnyttelse | ineffektiv | Effektiv |
Definisjon av Array
En array er definert som et sett med et bestemt antall homogene elementer eller dataposter. Det betyr at en matrise kun kan inneholde en type data, enten alle heltall, alle flytende punktnumre eller alle tegn. Erklæring av en matrise er som følger:
int a [10];
Hvor int angir datatypen eller typeelementene array butikker. "A" er navnet på en matrise, og tallet som er angitt inne i firkant parentes er antall elementer en matrise kan lagre, dette kalles også størrelsen eller lengden på matrisen.
La oss se på noen av konseptene som skal huskes om arrays:
- De enkelte elementene i en matrise kan nås ved å beskrive navnet på matrisen, etterfulgt av indeks eller underskrift (bestemme plasseringen av elementet i matrisen) inne i firkantede parenteser. For eksempel, for å hente 5. elementet i arrayet, må vi skrive en setning a [4].
- I alle fall vil elementene i en matrise bli lagret i en påfølgende minneplass.
- Det allerste elementet i arrayet har indeks null [0]. Det betyr at det første og siste elementet vil bli spesifisert som henholdsvis [0] og a [9].
- Antall elementer som kan lagres i en matrise, dvs. størrelsen på en matrise eller dens lengde, er gitt av følgende ligning:
(øvre grense-nedre bundet) + 1
For ovennevnte matrise ville det være (9-0) + 1 = 10. Hvor 0 er den nedre grensen til gruppen, og 9 er den øvre grensen til gruppen. - Arrays kan leses eller skrives gjennom løkken. Hvis vi leser det endimensjonale oppsettet, krever det en loop for lesing og andre for å skrive (skrive ut) arrayet, for eksempel:
en. For å lese en matrise
for (i = 0; i <= 9; i ++)
{scanf ("% d", og en [i]); }
b. For å skrive en matrise
for (i = 0; i <= 9; i ++)
{printf ("% d", en [i]); } - I tilfelle av en 2-D array ville det kreve to looper og tilsvarende n-dimensjonal array ville trenge n looper.
Operasjoner utført på arrays er:
- Opprettelse av matrise
- Traverserer en matrise
- Innføring av nye elementer
- Sletting av nødvendige elementer.
- Modifikasjon av et element.
- Sammenslåing av arrays
Eksempel
Følgende program illustrerer lesing og skriving av matrisen.
#include
#include
void main ()
{
int a[10], i;
printf("Enter the array");
for ( i= 0; i <= 9; i++)
{
scanf ( "%d", &a[ i ] ) ;
}
printf( "Enter the array" );
for (i = 0 ; i <= 9 ; i++)
{
printf ( "%d\n", a[ i ] ) ;
}
getch ();
}
Definisjon av koblet liste
Lenkeliste er en bestemt liste over enkelte dataelementer knyttet til en annen. I dette peker hvert element på det neste elementet som representerer den logiske bestillingen. 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 tilknyttede lister er enkeltlinket liste, dobbeltkoblet liste, sirkulærkoblet liste, sirkulær dobbeltkoblet liste.
Operasjoner utført på Linked List er:
- Opprettelse
- traversering
- Innsetting
- sletting
- Søker
- sammenkjeding
- Vise
Eksempel
Følgende utdrag illustrerer opprettelsen av en koblet liste:
struct node
{
int num;
stuct node *next;
}
start = NULL;
void create()
{
typedef struct node NODE;
NODE *p, *q;
char choice;
first = NULL;
do
{
p = (NODE *) malloc (sizeof (NODE));
printf ("Enter the data item\n");
scanf ("%d", & p -> num);
if (p == NULL)
{
q = start;
while (q -> next ! = NULL)
{ q = q -> next
}
p -> next = q -> next;
q -> = p;
}
else
{
p -> next = start;
start = p;
}
printf ("Do you want to continue (type y or n) ? \n");
scanf ("%c", &choice) ;
}
while ((choice == 'y') || (choice == 'Y'));
}
Viktige forskjeller mellom Array og Linked List
- En matrise er datastrukturen inneholder en samling av liknende typer dataelementer, mens den tilknyttede listen betraktes som ikke-primitive datastruktur inneholder en samling av uordnede koblede elementer kjent som noder.
- I matrisen tilhører elementene indekser, dvs. hvis du ønsker å komme inn i det fjerde elementet, må du skrive det variable navnet med indeksen eller plasseringen i firkantbraketten.
I en koblet liste skjønt, må du starte fra hodet og jobbe deg gjennom til du kommer til det fjerde elementet. - Mens tilgang til en elementmatrise er rask mens tilknyttet liste tar lineær tid så er det ganske tregere.
- Operasjoner som innsetting og sletting i arrays bruker mye tid. På den annen side er ytelsen til disse operasjonene i koblede lister rask.
- Arrays er av fast størrelse. Tilknyttet lister er derimot dynamiske og fleksible og kan utvide og kontrakten sin størrelse.
- I en array blir minne tildelt under kompileringstid mens det er tildelt i løpet av en kjøreliste, under utførelse eller kjøretid.
- Elementer lagres i rekkefølge i arrayer, mens det er lagret tilfeldig i koblede lister.
- Kravet om minne er mindre på grunn av at faktiske data lagres i indeksen i arrayet. Imidlertid er det behov for mer minne i koblede lister på grunn av lagring av flere neste og tidligere referanseelementer.
- I tillegg er minneutnyttelsen ineffektiv i gruppen. Omvendt er minneutnyttelse effektiv i gruppen.
Konklusjon
Array og Linked Lists er typer datastrukturer forskjellig i deres struktur, tilgang og manipuleringsmetoder, minnekrav og utnyttelse. Og har særlig fordel og ulempe ved implementeringen. Følgelig kan en av dem brukes etter behov.