Tilføjelse af Elementer
For at gøre din enkeltkædede liste nyttig, skal du tilføje noder til den. Du vil implementere logikken til at indsætte noder i listen. Du vil oprette nye noder, forbinde dem og integrere dem, så listen vokser dynamisk, efterhånden som du tilføjer elementer.
Denne praktiske tilgang hjælper dig med at forstå præcis, hvad der sker bag kulisserne.
Implementering af nodeindsættelse
Lad os skrive en simpel funktion til at oprette en node. Denne funktion skal:
- Tage et tal af typen int som argument, som gemmes i nodens datafelt;
- Oprette en pointer til et dynamisk allokeret hukommelsesområde (under hensyntagen til nodens størrelse);
- Kontrollere om hukommelsen til noden er blevet allokeret korrekt;
- Placere den ønskede værdi (funktionsargumentet) i datafeltet;
- Næste-pointeren skal være NULL, da funktionen kun opretter én node;
- Funktionen skal returnere en pointer til det hukommelsesområde, hvor værdien er gemt.
Funktionen AddNewNode() tager en pointer til en pointer, fordi den kan ændre værdien af pointeren til den første (head) node i listen, samt værdien der skal gemmes i den nye node:
void AddNewNode(struct Node** head, int value)
{
...
}
Hvis listen er tom (*head == NULL), opdateres blot pointeren til listen (*head) til at pege på den nye node (newNode), og i dette tilfælde bliver newNode den første node (hovednode). I tilfælde af en ikke-tom liste bruges en løkke til at finde den sidste node.
Den aktuelle node fungerer som en buffer-node, og med dens hjælp kan vi iterere gennem listen og finde en node, der ikke peger på noget (*next == NULL).
struct Node* current = *head;
while (current->next != NULL)
{
...
}
Til sidst skal du gøre den nye node newNode til den sidste node, hvilket betyder, at current->next skal være lig med newNode. Nu er newNode den sidste node i listen.
Som opgave skal du finde ud af og tilføje en funktion til at tilføje nye noder til eksisterende noder.
Swipe to start coding
Opret en funktion addNewNode, der tilføjer en ny node til slutningen af en enkeltkædet liste.
Inde i funktionen:
- Deklarér en variabel
struct Node* newNodeog opret en ny node ved hjælp afcreateNode(value). - Kontroller, om listen er tom ved at teste
*head == NULL. - Hvis listen er tom, tildel
newNodetil*head. - Hvis listen ikke er tom, deklarér
struct Node* currentog tildel den til*head. - Gennemløb listen med en
while-løkke, indtilcurrent->nexterNULL. - Når den sidste node er nået, sæt
current->next = newNode.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Fantastisk!
Completion rate forbedret til 4.35
Tilføjelse af Elementer
Stryg for at vise menuen
For at gøre din enkeltkædede liste nyttig, skal du tilføje noder til den. Du vil implementere logikken til at indsætte noder i listen. Du vil oprette nye noder, forbinde dem og integrere dem, så listen vokser dynamisk, efterhånden som du tilføjer elementer.
Denne praktiske tilgang hjælper dig med at forstå præcis, hvad der sker bag kulisserne.
Implementering af nodeindsættelse
Lad os skrive en simpel funktion til at oprette en node. Denne funktion skal:
- Tage et tal af typen int som argument, som gemmes i nodens datafelt;
- Oprette en pointer til et dynamisk allokeret hukommelsesområde (under hensyntagen til nodens størrelse);
- Kontrollere om hukommelsen til noden er blevet allokeret korrekt;
- Placere den ønskede værdi (funktionsargumentet) i datafeltet;
- Næste-pointeren skal være NULL, da funktionen kun opretter én node;
- Funktionen skal returnere en pointer til det hukommelsesområde, hvor værdien er gemt.
Funktionen AddNewNode() tager en pointer til en pointer, fordi den kan ændre værdien af pointeren til den første (head) node i listen, samt værdien der skal gemmes i den nye node:
void AddNewNode(struct Node** head, int value)
{
...
}
Hvis listen er tom (*head == NULL), opdateres blot pointeren til listen (*head) til at pege på den nye node (newNode), og i dette tilfælde bliver newNode den første node (hovednode). I tilfælde af en ikke-tom liste bruges en løkke til at finde den sidste node.
Den aktuelle node fungerer som en buffer-node, og med dens hjælp kan vi iterere gennem listen og finde en node, der ikke peger på noget (*next == NULL).
struct Node* current = *head;
while (current->next != NULL)
{
...
}
Til sidst skal du gøre den nye node newNode til den sidste node, hvilket betyder, at current->next skal være lig med newNode. Nu er newNode den sidste node i listen.
Som opgave skal du finde ud af og tilføje en funktion til at tilføje nye noder til eksisterende noder.
Swipe to start coding
Opret en funktion addNewNode, der tilføjer en ny node til slutningen af en enkeltkædet liste.
Inde i funktionen:
- Deklarér en variabel
struct Node* newNodeog opret en ny node ved hjælp afcreateNode(value). - Kontroller, om listen er tom ved at teste
*head == NULL. - Hvis listen er tom, tildel
newNodetil*head. - Hvis listen ikke er tom, deklarér
struct Node* currentog tildel den til*head. - Gennemløb listen med en
while-løkke, indtilcurrent->nexterNULL. - Når den sidste node er nået, sæt
current->next = newNode.
Løsning
Tak for dine kommentarer!
single