Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Lägga till element | Implementering av Datastrukturer
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Behärska C-Strukturer

bookLägga till element

För att göra din enkelriktade länkade lista användbar behöver du lägga till noder i den. Du kommer att implementera logiken för att infoga noder i listan. Du kommer att skapa nya noder, koppla ihop dem och integrera dem så att listan växer dynamiskt när du lägger till element.

Detta praktiska tillvägagångssätt hjälper dig att förstå exakt vad som händer bakom kulisserna.

Implementering av nodinfogning

Låt oss skriva en enkel funktion för att skapa en nod. Denna funktion ska:

  • Ta ett tal av typen int som argument, vilket kommer att lagras i nodens datafält;
  • Skapa en pekare till ett dynamiskt allokerat minnesområde (med hänsyn till nodens storlek);
  • Kontrollera att minnesallokeringen för noden lyckas;
  • Placera det önskade värdet (funktionsargumentet) i datafältet;
  • Nästa pekare måste vara NULL, eftersom funktionen endast skapar en nod;
  • Funktionen måste returnera en pekare till minnesområdet där värdet lagras.

Funktionen AddNewNode() tar en pekare till en pekare, eftersom den kan ändra värdet på pekaren till den första (head) noden i listan, samt värdet som ska lagras i den nya noden:

void AddNewNode(struct Node** head, int value) 
{
	...
}

Om listan är tom (*head == NULL) uppdaterar vi helt enkelt pekaren till listans huvud (*head) så att den pekar på den nya noden (newNode), i vilket fall newNode blir den första noden (huvudnoden). I fallet med en icke-tom lista använder vi en loop för att leta efter den sista noden.

Den aktuella noden fungerar som en buffertnod, med dess hjälp kan vi iterera genom listan och hitta en nod som inte pekar någonstans (*next == NULL).

struct Node* current = *head;

while (current->next != NULL) 
{
    ...
}

Till sist måste du göra den nya noden newNode till den sista noden, vilket innebär att current->next ska vara lika med newNode. Nu är newNode den sista noden i listan.

Som uppgift ska du ta reda på och lägga till en funktion för att lägga till nya noder till befintliga noder.

Uppgift

Swipe to start coding

Skapa en funktion addNewNode som lägger till en ny nod i slutet av en enkel länkad lista.

Inuti funktionen:

  1. Deklarera en variabel struct Node* newNode och skapa en ny nod med createNode(value).
  2. Kontrollera om listan är tom genom att testa *head == NULL.
  3. Om listan är tom, tilldela newNode till *head.
  4. Om listan inte är tom, deklarera struct Node* current och tilldela den till *head.
  5. Gå igenom listan med en while-loop tills current->next är NULL.
  6. När sista noden har nåtts, sätt current->next = newNode.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 3
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you show me an example of how to use the AddNewNode function?

What should the Node struct look like for this implementation?

Can you explain how memory management works when adding new nodes?

close

bookLägga till element

Svep för att visa menyn

För att göra din enkelriktade länkade lista användbar behöver du lägga till noder i den. Du kommer att implementera logiken för att infoga noder i listan. Du kommer att skapa nya noder, koppla ihop dem och integrera dem så att listan växer dynamiskt när du lägger till element.

Detta praktiska tillvägagångssätt hjälper dig att förstå exakt vad som händer bakom kulisserna.

Implementering av nodinfogning

Låt oss skriva en enkel funktion för att skapa en nod. Denna funktion ska:

  • Ta ett tal av typen int som argument, vilket kommer att lagras i nodens datafält;
  • Skapa en pekare till ett dynamiskt allokerat minnesområde (med hänsyn till nodens storlek);
  • Kontrollera att minnesallokeringen för noden lyckas;
  • Placera det önskade värdet (funktionsargumentet) i datafältet;
  • Nästa pekare måste vara NULL, eftersom funktionen endast skapar en nod;
  • Funktionen måste returnera en pekare till minnesområdet där värdet lagras.

Funktionen AddNewNode() tar en pekare till en pekare, eftersom den kan ändra värdet på pekaren till den första (head) noden i listan, samt värdet som ska lagras i den nya noden:

void AddNewNode(struct Node** head, int value) 
{
	...
}

Om listan är tom (*head == NULL) uppdaterar vi helt enkelt pekaren till listans huvud (*head) så att den pekar på den nya noden (newNode), i vilket fall newNode blir den första noden (huvudnoden). I fallet med en icke-tom lista använder vi en loop för att leta efter den sista noden.

Den aktuella noden fungerar som en buffertnod, med dess hjälp kan vi iterera genom listan och hitta en nod som inte pekar någonstans (*next == NULL).

struct Node* current = *head;

while (current->next != NULL) 
{
    ...
}

Till sist måste du göra den nya noden newNode till den sista noden, vilket innebär att current->next ska vara lika med newNode. Nu är newNode den sista noden i listan.

Som uppgift ska du ta reda på och lägga till en funktion för att lägga till nya noder till befintliga noder.

Uppgift

Swipe to start coding

Skapa en funktion addNewNode som lägger till en ny nod i slutet av en enkel länkad lista.

Inuti funktionen:

  1. Deklarera en variabel struct Node* newNode och skapa en ny nod med createNode(value).
  2. Kontrollera om listan är tom genom att testa *head == NULL.
  3. Om listan är tom, tilldela newNode till *head.
  4. Om listan inte är tom, deklarera struct Node* current och tilldela den till *head.
  5. Gå igenom listan med en while-loop tills current->next är NULL.
  6. När sista noden har nåtts, sätt current->next = newNode.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 3
single

single

some-alt