Legge 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.
Swipe to start coding
Lag en funksjon addNewNode som legger til en ny node på slutten av en enkelt lenket liste.
Inne i funksjonen:
- Deklarer en variabel
struct Node* newNodeog opprett en ny node ved å brukecreateNode(value). - Sjekk om listen er tom ved å teste
*head == NULL. - Hvis listen er tom, tildel
newNodetil*head. - Hvis listen ikke er tom, deklarer
struct Node* currentog tildel den til*head. - Gå gjennom listen med en
while-løkke tilcurrent->nexterNULL. - Etter å ha nådd siste node, sett
current->next = newNode.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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?
Fantastisk!
Completion rate forbedret til 4.35
Legge 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.
Swipe to start coding
Lag en funksjon addNewNode som legger til en ny node på slutten av en enkelt lenket liste.
Inne i funksjonen:
- Deklarer en variabel
struct Node* newNodeog opprett en ny node ved å brukecreateNode(value). - Sjekk om listen er tom ved å teste
*head == NULL. - Hvis listen er tom, tildel
newNodetil*head. - Hvis listen ikke er tom, deklarer
struct Node* currentog tildel den til*head. - Gå gjennom listen med en
while-løkke tilcurrent->nexterNULL. - Etter å ha nådd siste node, sett
current->next = newNode.
Løsning
Takk for tilbakemeldingene dine!
single