I grund och botten är en grupp en uppsättning liknande dataobjekt som lagras i sekventiella minnesplatser under ett gemensamt rubrik eller ett variabelt namn.
Medan en länkad lista är en datastruktur som innehåller en sekvens av elementen där varje element är kopplat till nästa element. Det finns två fält i ett element i länklistan. En är datafält och annat är länkfält, datafältet innehåller det faktiska värdet som ska lagras och bearbetas. Dessutom innehåller länkfältet adressen till nästa dataobjekt i den länkade listan. Den adress som används för att komma åt en viss nod är känd som en pekare.
En annan signifikant skillnad mellan en array och en länkad lista är att Array har en fast storlek och krävs för att deklareras tidigare, men länklistan är inte begränsad till storlek och utökas och kontrakt under körning.
Jämförelsediagram
Grunder för jämförelse | Array | Länkad lista |
---|---|---|
Grundläggande | Det är en konsekvent uppsättning av ett fast antal dataposter. | Det är en beställd uppsättning som innefattar ett varierande antal dataposter. |
Storlek | Specificerat under deklarationen. | Inget behov av att ange; växa och krympa under körning. |
Lagringstilldelning | Elementplatsen tilldelas under kompileringstiden. | Elementposition tilldelas under körtiden. |
Beställa av elementen | Lagras i följd | Lagras slumpmässigt |
Åtkomst till elementet | Direkt eller slumpmässigt åtkomst, dvs Ange matrisindex eller prenumeration. | Sequential accessed, dvs Traverse startar från den första noden i listan med pekaren. |
Infogning och radering av element | Långsam relativt som skiftning krävs. | Lättare, snabb och effektiv. |
Sökande | Binär sökning och linjär sökning | linjär sökning |
Minne krävs | mindre | Mer |
Minnesutnyttjande | Ineffektiv | Effektiv |
Definition av Array
En array definieras som en uppsättning av ett bestämt antal homogena element eller dataposter. Det betyder att en array endast kan innehålla en typ av data, antingen alla heltal, alla flytande punkter eller alla tecken. Deklaration av en array är som följer:
int a [10];
Där int anger datatypen eller typelementen array butiker. "A" är namnet på en matris, och numret som anges inom hakparenteserna är antalet element som en matris kan lagra, detta kallas också storleken eller längden på matrisen.
Låt oss titta på några av de begrepp som ska komma ihåg om arrays:
- De enskilda elementen i en matris kan nås genom att beskriva namnet på matrisen följt av index eller prenumeration (bestämning av elementets placering i matrisen) inuti torghakarna. Till exempel, för att hämta 5: e elementet i arrayen, måste vi skriva ett uttalande a [4].
- I vilket fall som helst kommer elementen i en grupp att lagras i en efterföljande minnesplats.
- Det allra första elementet i matrisen har index noll [0]. Det betyder att det första och sista elementet kommer att anges som en [0] respektive en [9].
- Antalet element som kan lagras i en array, dvs storleken på en array eller dess längd ges av följande ekvation:
(övre gräns-nedre gränsen) + 1
För ovanstående array skulle det vara (9-0) + 1 = 10. Där 0 är den nedre gränsen för matrisen och 9 är den övre gränsen för matrisen. - Skivor kan läsas eller skrivas genom slingan. Om vi läser den endimensionella matrisen krävs det en slinga för läsning och andra för att skriva (skriva ut) matrisen, till exempel:
en. För att läsa en matris
för (i = 0; i <= 9; i ++)
{scanf ("% d", & a [i]); }
b. För att skriva en array
för (i = 0; i <= 9; i ++)
{printf ("% d", en [i]); } - I fallet med en 2-D-array skulle det kräva två loopar och liknande n-dimensionell array skulle behöva n-slingor.
Operationer utförda på arrays är:
- Skapande av array
- Traverserar en array
- Införande av nya element
- Radering av nödvändiga element.
- Ändring av ett element.
- Sammanslagning av arrays
Exempel
Följande program illustrerar läsning och skrivning 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 ();
}
Definition av länklista
Länkade lista är en särskild lista över vissa dataelement kopplade till en annan. I detta pekar varje element på nästa element som representerar den logiska beställningen. Varje element kallas en nod, som har två delar.
INFO-del som lagrar informationen och POINTER som pekar på nästa element. Som du vet för att lagra adressen har vi en unik datastruktur i C-kallade pekare. Därför måste det andra fältet i listan vara en pekartyp.
Typer av länkade listor är enbart länkad lista, dubbelt länkad lista, cirkulär länkad lista, cirkulär dubbellänkad lista.
Operationer som utförs på länklistan är:
- Skapande
- Körning
- Införande
- Radering
- Sökande
- sammanslagning
- Visa
Exempel
Följande utdrag illustrerar skapandet av en länkad lista:
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'));
}
Viktiga skillnader mellan array och länklista
- En array är datastrukturen innehåller en samling av liknande dataelement, medan den länkade listan anses vara icke-primitiv datastruktur innehåller en samling oordnade länkade element som är kända som noder.
- I matrisen hör elementen till index, dvs om du vill komma in i det fjärde elementet måste du skriva det variabla namnet med dess index eller plats inom kvadratkonsolen.
I en länkad lista måste du börja från huvudet och arbeta dig igenom tills du kommer till det fjärde elementet. - Medan åtkomst till en elementmatris är snabb medan länklistan tar linjär tid så är det ganska långsammare.
- Operationer som införande och radering i arrays förbrukar mycket tid. Å andra sidan är resultatet av dessa operationer i länkade listor snabbt.
- Arrays är av fast storlek. Länkade listor är däremot dynamiska och flexibla och kan expandera och kontrakta sin storlek.
- I en array är minnet tilldelat under sammanställningstiden medan den är tilldelad under en länkad lista under körning eller körning.
- Elementen lagras i följd i arrayer medan den lagras slumpmässigt i länkade listor.
- Kravet på minne är mindre på grund av att faktiska data lagras inom indexet i matrisen. Däremot finns det behov av mer minne i länkade listor på grund av lagring av ytterligare nästa och tidigare referenselement.
- Dessutom är minnesutnyttjandet ineffektivt i matrisen. Omvänt är minnesutnyttjandet effektivt i matrisen.
Slutsats
Array- och länklistor är typerna av datastrukturer som är olika i deras struktur, åtkomst och manipuleringsmetoder, minneskrav och utnyttjande. Och har särskild fördel och nackdel för dess genomförande. Följaktligen kan endera användas enligt behov.