Listor och arrayer är de mest grundläggande sätten att organisera data i datorns minne. I den här delen av kursen undersöker vi hur dessa strukturer skiljer sig åt tekniskt, särskilt när det gäller minnesallokering och åtkomsttid. Eleverna får lära sig att en array har en fast storlek och snabb åtkomst, medan länkade listor erbjuder flexibilitet på bekostnad av sökbarhet.
Skolverket KursplanerDAODAT0 - 1. Algoritmer och datastrukturerDAODAT0 - 3. Programkonstruktion
Varje elev agerar en 'nod' som håller ett värde och en lapp med namnet på nästa person i listan. Genom att fysiskt flytta på sig eller ändra sina lappar simulerar de hur element läggs till eller tas bort utan att flytta på hela gruppen.
Vad är skillnaden mellan en array och en länkad lista?
I små grupper får eleverna i uppdrag att implementera en enkel telefonbok. De ska testa att lägga till kontakter i mitten av en array respektive en länkad lista och räkna hur många 'steg' eller flyttar som krävs i varje fall.
Eleverna får ett scenario där de ska lagra data för en sensor som skickar värden varje sekund. De diskuterar i par om en array eller en länkad lista är bäst lämpad baserat på hur datan ska användas och delas sedan med klassen.
Att listor i Python fungerar exakt som arrayer i C++ eller Java.
Förklara att Python-listor är mer komplexa objekt (dynamiska arrayer). Genom att diskutera minneshantering på låg nivå förstår eleverna varför 'enkla' operationer ibland kan vara långsamma.
Att länkade listor alltid är bättre för att de kan växa.
Visa att sökning i en länkad lista kräver att man går igenom varje element. Genom att jämföra 'indexering' i båda strukturerna ser eleverna arrayens fördel vid direktåtkomst.