Genomgång och visning av en länkad lista
Efter att vi har lärt oss hur man skapar och kopplar samman noder, behöver vi kontrollera att en sådan lista fungerar korrekt!
För detta skriver vi en enkel funktion som visar hela listan.
Funktionen tar emot en pekare till minnesområdet där huvudet (första noden) i listan lagras.
void printList(struct Node* head) {}
Därefter skapas en temporär nod current, med vilken vi går igenom hela listan. Innehållet i den aktuella noden kommer att vara lika med innehållet i den aktuella listnoden.
struct Node* current = head;
För att iterera genom listan använder vi while(){}-loopen med det nödvändiga villkoret, nämligen tills en nod hittas vars next-fält är NULL.
temp (temporär) nod fungerar som en buffertnod. Den används för att tillfälligt lagra (och ta bort) innehållet i den aktuella noden. Om vi omedelbart rensar den aktuella noden, förlorar vi kopplingen till nästa nod, vilket innebär att åtkomsten till listan går förlorad.
while (current != NULL) { }
printf("\n");
Inuti loopen visar vi innehållet i data-fältet för den aktuella noden och ändrar next-fältet för att gå vidare till nästa nod.
printf("%d ", current->data);
current = current->next;
Så snart en nod hittas vars next-fält är lika med NULL, kommer loopen att sluta visa innehållet i noderna och funktionen avslutas.
Swipe to start coding
Implementera en enkel enkelriktad länkad lista med dynamisk minnesallokering. Uppgiften är att färdigställa funktionerna printList och freeList.
-
Implementera en funktion
printListmed en parameterstruct Node* head.- Deklarera en variabel
currentoch initiera den tillheadiprintList. - Använd en
while-loop för att iterera så längecurrentinte ärNULL. - Vid varje iteration, skriv ut fältet
dataförcurrentoch flyttacurrenttill nästa nod. - Efter loopen, skriv ut ett radbrytningstecken för att separera utdata.
- Deklarera en variabel
-
I
freeList, deklarera en variabelcurrentoch initiera den tillhead.- Använd en
while-loop för att iterera så längecurrentinte ärNULL. - Inuti loopen, lagra
currenti en temporär variabeltemp. - Flytta
currenttill nästa nod. - Frigör minnet som är allokerat för
temp.
- Använd en
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Fantastiskt!
Completion betyg förbättrat till 4.35
Genomgång och visning av en länkad lista
Svep för att visa menyn
Efter att vi har lärt oss hur man skapar och kopplar samman noder, behöver vi kontrollera att en sådan lista fungerar korrekt!
För detta skriver vi en enkel funktion som visar hela listan.
Funktionen tar emot en pekare till minnesområdet där huvudet (första noden) i listan lagras.
void printList(struct Node* head) {}
Därefter skapas en temporär nod current, med vilken vi går igenom hela listan. Innehållet i den aktuella noden kommer att vara lika med innehållet i den aktuella listnoden.
struct Node* current = head;
För att iterera genom listan använder vi while(){}-loopen med det nödvändiga villkoret, nämligen tills en nod hittas vars next-fält är NULL.
temp (temporär) nod fungerar som en buffertnod. Den används för att tillfälligt lagra (och ta bort) innehållet i den aktuella noden. Om vi omedelbart rensar den aktuella noden, förlorar vi kopplingen till nästa nod, vilket innebär att åtkomsten till listan går förlorad.
while (current != NULL) { }
printf("\n");
Inuti loopen visar vi innehållet i data-fältet för den aktuella noden och ändrar next-fältet för att gå vidare till nästa nod.
printf("%d ", current->data);
current = current->next;
Så snart en nod hittas vars next-fält är lika med NULL, kommer loopen att sluta visa innehållet i noderna och funktionen avslutas.
Swipe to start coding
Implementera en enkel enkelriktad länkad lista med dynamisk minnesallokering. Uppgiften är att färdigställa funktionerna printList och freeList.
-
Implementera en funktion
printListmed en parameterstruct Node* head.- Deklarera en variabel
currentoch initiera den tillheadiprintList. - Använd en
while-loop för att iterera så längecurrentinte ärNULL. - Vid varje iteration, skriv ut fältet
dataförcurrentoch flyttacurrenttill nästa nod. - Efter loopen, skriv ut ett radbrytningstecken för att separera utdata.
- Deklarera en variabel
-
I
freeList, deklarera en variabelcurrentoch initiera den tillhead.- Använd en
while-loop för att iterera så längecurrentinte ärNULL. - Inuti loopen, lagra
currenti en temporär variabeltemp. - Flytta
currenttill nästa nod. - Frigör minnet som är allokerat för
temp.
- Använd en
Lösning
Tack för dina kommentarer!
single