Verschil tussen arrays en gelinkte lijsten

Anonim

Arrays vs Linked Lists

Arrays zijn de meest gebruikte gegevensstructuur om de verzameling elementen te bewaren. De meeste programmeertalen bieden methoden om arrays en toegangselementen in de arrays gemakkelijk te verklaren. Gekoppelde lijst, meer nauwkeurig gekoppelde lijst, is ook een data structuur die gebruikt kan worden om de verzameling elementen op te slaan. Het bestaat uit een reeks knooppunten en elk knooppunt heeft een verwijzing naar het volgende knooppunt in de reeks.

In figuur 1 is een stuk code typisch gebruikt om waarden te classificeren en toe te wijzen aan een array. Figuur 2 laat zien hoe een array in het geheugen zou lijken.

Bovenstaande code definieert een matrix die 5 integers kan opslaan en worden toegankelijk via de indexen 0 tot 4. Een belangrijk eigenschap van een array is dat hele array is toegewezen als een enkel blok geheugen en elk element krijgt zijn eigen ruimte in de matrix. Zodra een array is gedefinieerd, is de grootte ervan vastgezet. Dus als u niet zeker bent van de grootte van de array op compileertijd, dan moet u een groot genoeg array definiëren om in de veilige kant te zijn. Maar meestal gaan we eigenlijk minder elementen gebruiken dan we hebben toegewezen. Dus een aanzienlijke hoeveelheid geheugen is eigenlijk verspild. Aan de andere kant, als de 'grote genoeg array' niet echt groot genoeg is, zou het programma crashen.

Een gekoppelde lijst wijst geheugen afzonderlijk in zijn eigen blok van geheugen en de algemene structuur wordt verkregen door deze elementen als koppelingen in een ketting te koppelen. Elk element in een gekoppelde lijst heeft twee velden, zoals weergegeven in figuur 3. Het gegevensveld bevat de actuele gegevens die zijn opgeslagen en het volgende veld bevat de verwijzing naar het volgende element in de keten. Het eerste element van de gekoppelde lijst is opgeslagen als de kop van de gekoppelde lijst.

data volgende

Figuur 3: Element van een gekoppelde lijst

Figuur 4 toont een gekoppelde lijst met drie elementen. Elk element slaat zijn gegevens op en alle elementen behalve de laatste bevatten een verwijzing naar het volgende element. Laatste element heeft een nulwaarde in het volgende veld. Elk element in de lijst kan worden geopend door aan het hoofd te beginnen en de volgende aanwijzer te volgen totdat u het benodigde element voldoet.

Hoewel de arrays en de gekoppelde lijsten vergelijkbaar zijn in de zin dat ze beide worden gebruikt om de collectie elementen op te slaan, ontstaan ​​er verschillen als gevolg van de strategieën die ze gebruiken om geheugen aan zijn elementen toe te wijzen. Arrays toewijzen geheugen aan al zijn elementen als een enkel blok en de grootte van de array moet op runtime bepaald worden. Dit zou de arrays inefficiënt maken in situaties waarin u de grootte van de array niet weet op compileertijd. Aangezien een gekoppelde lijst geheugen afzonderlijk aan zijn elementen toewijst, zou het zeer efficiënt zijn in situaties waarin u de grootte van de lijst niet op de compileertijd kent.Verklaring en toegang tot elementen in een gekoppelde lijst zou niet rechtdoor zijn in vergelijking met hoe u direct toegang heeft tot elementen in een array met behulp van de indexen.