Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Legge til elementer | Implementering av Datastrukturer
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Mestre C-strukturer

bookLegge til elementer

For å gjøre din enkeltlenkede liste nyttig, må du legge til noder i den. Du skal implementere logikken for å sette inn noder i listen. Du vil opprette nye noder, koble dem sammen og integrere dem slik at listen vokser dynamisk etter hvert som du legger til elementer.

Denne praktiske tilnærmingen hjelper deg å forstå nøyaktig hva som skjer bak kulissene.

Implementering av nodeinnsetting

La oss skrive en enkel funksjon for å opprette en node. Denne funksjonen skal:

  • Ta et tall av typen int som argument, som skal lagres i nodefeltet data;
  • Opprette en peker til et dynamisk allokert minneområde (med hensyn til størrelsen på noden);
  • Sjekke om minneallokeringen for noden er vellykket;
  • Legge inn ønsket verdi (funksjonsargumentet) i datafeltet;
  • Neste-peker må være NULL, siden funksjonen kun oppretter én node;
  • Funksjonen må returnere en peker til minneområdet hvor verdien er lagret.

Funksjonen AddNewNode() tar en peker til en peker, fordi den kan endre verdien til pekeren til den første (head) noden i listen, samt verdien som skal lagres i den nye noden:

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

Hvis listen er tom (*head == NULL), oppdaterer vi bare pekeren til listen (*head) slik at den peker til den nye noden (newNode), og da blir newNode den første noden (hode-noden). I tilfelle en ikke-tom liste bruker vi en løkke for å finne den siste noden.

Den nåværende noden fungerer som en buffer-node, og med dens hjelp kan vi iterere gjennom listen og finne en node som ikke peker videre (*next == NULL).

struct Node* current = *head;

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

Til slutt må du gjøre den nye noden newNode til den siste noden, noe som betyr at current->next må være lik newNode. Nå er newNode den siste noden i listen.

Som en oppgave skal du finne ut av og legge til en funksjon for å legge til nye noder til eksisterende noder.

Oppgave

Swipe to start coding

Lag en funksjon addNewNode som legger til en ny node på slutten av en enkelt lenket liste.

Inne i funksjonen:

  1. Deklarer en variabel struct Node* newNode og opprett en ny node ved å bruke createNode(value).
  2. Sjekk om listen er tom ved å teste *head == NULL.
  3. Hvis listen er tom, tildel newNode til *head.
  4. Hvis listen ikke er tom, deklarer struct Node* current og tildel den til *head.
  5. Gå gjennom listen med en while-løkke til current->next er NULL.
  6. Etter å ha nådd siste node, sett current->next = newNode.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 3
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookLegge til elementer

Sveip for å vise menyen

For å gjøre din enkeltlenkede liste nyttig, må du legge til noder i den. Du skal implementere logikken for å sette inn noder i listen. Du vil opprette nye noder, koble dem sammen og integrere dem slik at listen vokser dynamisk etter hvert som du legger til elementer.

Denne praktiske tilnærmingen hjelper deg å forstå nøyaktig hva som skjer bak kulissene.

Implementering av nodeinnsetting

La oss skrive en enkel funksjon for å opprette en node. Denne funksjonen skal:

  • Ta et tall av typen int som argument, som skal lagres i nodefeltet data;
  • Opprette en peker til et dynamisk allokert minneområde (med hensyn til størrelsen på noden);
  • Sjekke om minneallokeringen for noden er vellykket;
  • Legge inn ønsket verdi (funksjonsargumentet) i datafeltet;
  • Neste-peker må være NULL, siden funksjonen kun oppretter én node;
  • Funksjonen må returnere en peker til minneområdet hvor verdien er lagret.

Funksjonen AddNewNode() tar en peker til en peker, fordi den kan endre verdien til pekeren til den første (head) noden i listen, samt verdien som skal lagres i den nye noden:

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

Hvis listen er tom (*head == NULL), oppdaterer vi bare pekeren til listen (*head) slik at den peker til den nye noden (newNode), og da blir newNode den første noden (hode-noden). I tilfelle en ikke-tom liste bruker vi en løkke for å finne den siste noden.

Den nåværende noden fungerer som en buffer-node, og med dens hjelp kan vi iterere gjennom listen og finne en node som ikke peker videre (*next == NULL).

struct Node* current = *head;

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

Til slutt må du gjøre den nye noden newNode til den siste noden, noe som betyr at current->next må være lik newNode. Nå er newNode den siste noden i listen.

Som en oppgave skal du finne ut av og legge til en funksjon for å legge til nye noder til eksisterende noder.

Oppgave

Swipe to start coding

Lag en funksjon addNewNode som legger til en ny node på slutten av en enkelt lenket liste.

Inne i funksjonen:

  1. Deklarer en variabel struct Node* newNode og opprett en ny node ved å bruke createNode(value).
  2. Sjekk om listen er tom ved å teste *head == NULL.
  3. Hvis listen er tom, tildel newNode til *head.
  4. Hvis listen ikke er tom, deklarer struct Node* current og tildel den til *head.
  5. Gå gjennom listen med en while-løkke til current->next er NULL.
  6. Etter å ha nådd siste node, sett current->next = newNode.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 3
single

single

some-alt