Dybest set er et array et sæt af lignende dataobjekter, der er gemt i sekventielle hukommelsessteder under en fælles overskrift eller et variabelt navn.
Mens en tilknyttet liste er en datastruktur, der indeholder en sekvens af elementerne, hvor hvert element er knyttet til dets næste element. Der er to felter i et element af tilknyttet liste. Et er datafelt, og andet er linkfelt, datafelt indeholder den faktiske værdi, der skal gemmes og behandles. Desuden indeholder linkfeltet adressen til det næste datapunkt i den linkede liste. Den adresse, der bruges til at få adgang til en bestemt node, er kendt som en pointer.
En anden væsentlig forskel mellem en matrix og en tilknyttet liste er, at Array har en fast størrelse og skal angives tidligere, men Links List er ikke begrænset til størrelse og udvides og kontrakt under udførelse.
Sammenligningstabel
Grundlag for sammenligning | Array | Tilknyttet liste |
---|---|---|
Grundlæggende | Det er et konsekvent sæt af et fast antal dataelementer. | Det er et bestilt sæt bestående af et variabelt antal dataposter. |
Størrelse | Angivet under erklæring. | Ingen grund til at angive; vokse og krympe under udførelsen. |
Storage Allocation | Element placering er allokeret under kompileringstid. | Elementposition tildeles under løbetiden. |
Bestilling af elementerne | Opbevares efter hinanden | Gemt tilfældigt |
Adgang til elementet | Direkte eller tilfældigt adgang, dvs. Angiv array indeks eller abonnement. | Sekventielt adgang, dvs. Traverse startende fra den første node i listen med markøren. |
Indsætning og sletning af element | Langsomt relativt som skift er påkrævet. | Nemmere, hurtig og effektiv. |
Søger | Binær søgning og lineær søgning | lineær søgning |
Hukommelse kræves | mindre | Mere |
Hukommelsesudnyttelse | Ineffektiv | Effektiv |
Definition af Array
Et array defineres som et sæt af et bestemt antal homogene elementer eller dataposter. Det betyder, at en matrix kun kan indeholde en type data, enten alle heltal, alle flydende punktnumre eller alle tegn. Erklæring af et array er som følger:
int a [10];
Hvor int specificerer datatypen eller typen elementer array butikker. "A" er navnet på et array, og tallet angivet inden for firkantede parenteser er antallet af elementer, som et array kan gemme, det kaldes også størrelsen eller længden af arrayet.
Lad os se på nogle af de begreber, der skal huskes om arrays:
- De enkelte elementer i et array kan fås ved at beskrive navnet på arrayet efterfulgt af indeks eller underskrift (bestemmelse af elementets placering i arrayet) inde i firkantede parenteser. For at hente 5. element af arrayet skal vi for eksempel skrive en erklæring a [4].
- Under alle omstændigheder vil elementerne i et array blive lagret i en efterfølgende hukommelsesplacering.
- Det allerførste element i arrayet har indeks nul [0]. Det betyder, at det første og sidste element vil blive specificeret som henholdsvis [0] og henholdsvis [9].
- Antallet af elementer, der kan gemmes i en matrix, dvs. størrelsen på et array eller dets længde er givet ved følgende ligning:
(øvre grænse-nedre grænse) + 1
For ovenstående array ville det være (9-0) + 1 = 10. Hvor 0 er den nedre grænse af arrayet, og 9 er den øvre grænse af arrayet. - Arrays kan læses eller skrives gennem løkken. Hvis vi læser det endimensionelle array, kræver det en loop til læsning og andre til at skrive (udskrivning) arrayet, for eksempel:
en. Til læsning af en matrix
for (i = 0; i <= 9; i ++)
{scanf ("% d", & a [i]); }
b. Til at skrive en matrix
for (i = 0; i <= 9; i ++)
{printf ("% d", en [i]); } - I tilfælde af et 2-D array ville det kræve to loops og tilsvarende n-dimensional array ville have brug for n loops.
Operationer udført på arrays er:
- Oprettelse af array
- Traverserer en matrix
- Indsætning af nye elementer
- Sletning af nødvendige elementer.
- Ændring af et element.
- Fusion af arrays
Eksempel
Følgende program illustrerer læsning og skrivning af arrayet.
#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 ();
}
Definition af tilknyttet liste
Tilknyttet liste er en særlig liste over nogle dataelementer knyttet til en anden. I dette peger hvert element på det næste element, der repræsenterer den logiske bestilling. Hvert element kaldes en node, som har to dele.
INFO del, der gemmer informationen og POINTER som peger på det næste element. Som du ved for at lagre adressen, har vi enestående datastrukturer i C-kaldte pointers. Derfor skal det andet felt i listen være en pegertype.
Typer af tilknyttede lister er Singlelinket liste, Liste med dobbelt link, Cirkulærlinket liste, Cirkulær dobbeltkoblet liste.
Operationer udført på Linked List er:
- Skabelse
- Kørsel
- Indsættelse
- Sletning
- Søger
- sammenkædning
- Skærm
Eksempel
Følgende uddrag illustrerer oprettelsen af en linket 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'));
}
Nøgleforskelle mellem Array og Linked List
- Et array er datastrukturen indeholder en samling af lignende type dataelementer, mens den tilknyttede liste betragtes som ikke-primitiv datastruktur indeholder en samling uordnede sammenknyttede elementer kendt som noder.
- I matricen hører elementerne til indekser, dvs. hvis man ønsker at komme ind i det fjerde element, skal man skrive det variable navn med sit indeks eller placering indenfor firkantbøjlen.
På en tilknyttet liste skal du dog starte fra hovedet og arbejde dig igennem, indtil du kommer til det fjerde element. - Mens adgang til et element array er hurtig, mens Linked List tager lineær tid så er det ret lidt langsommere.
- Operationer som indsættelse og sletning i arrays forbruger meget tid. På den anden side er udførelsen af disse operationer i tilknyttede lister hurtig.
- Arrays er af fast størrelse. Tilknyttet lister er derimod dynamiske og fleksible og kan udvide og indgå i kontraktens størrelse.
- I et array er hukommelse tildelt under kompileringstid, mens den i en tilknyttet liste er tildelt under udførelse eller runtime.
- Elementer gemmes efter hinanden i arrays, mens det er gemt tilfældigt i tilknyttede lister.
- Kravet om hukommelse er mindre, fordi de faktiske data lagres inde i indekset i arrayet. I modsætning hertil er der behov for mere hukommelse i tilknyttede lister på grund af opbevaring af yderligere næste og tidligere referenceelementer.
- Desuden er hukommelsesudnyttelsen ineffektiv i arrayet. Omvendt er hukommelsesudnyttelse effektiv i arrayet.
Konklusion
Array og Linked Lists er typer af datastrukturer forskelligt i deres struktur, adgang og manipulation metoder, hukommelseskrav og udnyttelse. Og har særlig fordel og ulempe ved gennemførelsen. Som følge heraf kan man enten bruge som efter behov.