Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tilføjelse af Elementer | Implementering af Datastrukturer
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Beherskelse af C Structs

bookTilfø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.

Opgave

Swipe to start coding

Opret en funktion addNewNode, der tilføjer en ny node til slutningen af en enkeltkædet liste.

Inde i funktionen:

  1. Deklarér en variabel struct Node* newNode og opret en ny node ved hjælp af createNode(value).
  2. Kontroller, om listen er tom ved at teste *head == NULL.
  3. Hvis listen er tom, tildel newNode til *head.
  4. Hvis listen ikke er tom, deklarér struct Node* current og tildel den til *head.
  5. Gennemløb listen med en while-løkke, indtil current->next er NULL.
  6. Når den sidste node er nået, sæt current->next = newNode.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

close

bookTilfø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.

Opgave

Swipe to start coding

Opret en funktion addNewNode, der tilføjer en ny node til slutningen af en enkeltkædet liste.

Inde i funktionen:

  1. Deklarér en variabel struct Node* newNode og opret en ny node ved hjælp af createNode(value).
  2. Kontroller, om listen er tom ved at teste *head == NULL.
  3. Hvis listen er tom, tildel newNode til *head.
  4. Hvis listen ikke er tom, deklarér struct Node* current og tildel den til *head.
  5. Gennemløb listen med en while-løkke, indtil current->next er NULL.
  6. Når den sidste node er nået, sæt current->next = newNode.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 3
single

single

some-alt