Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Adicionando Elementos | Implementando Estruturas de Dados
Dominando Structs em C

bookAdicionando Elementos

Para tornar sua lista simplesmente encadeada útil, é necessário adicionar nós a ela. Você irá implementar a lógica para inserir nós na lista. Você criará novos nós, conectará eles e os integrará para que a lista cresça dinamicamente à medida que elementos são adicionados.

Essa abordagem prática auxilia na compreensão exata do que ocorre nos bastidores.

Implementando a Inserção de Nós

Vamos escrever uma função simples para criar um nó. Esta função deve:

  • Receber como argumento um número do tipo int, que será armazenado no campo data do nó;
  • Criar um ponteiro para uma área de memória alocada dinamicamente (considerando o tamanho do nó);
  • Verificar o sucesso da alocação de memória para o nó;
  • Colocar o valor necessário (argumento da função) no campo data;
  • O ponteiro next deve ser NULL, já que a função cria apenas um nó;
  • A função deve retornar um ponteiro para a área de memória onde o valor está armazenado.

A função AddNewNode() recebe um ponteiro para ponteiro, pois pode alterar o valor do ponteiro para o primeiro nó (head) da lista, assim como o valor que será armazenado no novo nó:

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

Se a lista estiver vazia (*head == NULL), simplesmente atualizamos o ponteiro para o início da lista (*head) para apontar para o novo nó (newNode), nesse caso newNode se tornará o primeiro nó (nó cabeça). No caso de uma lista não vazia, utilizamos um loop para procurar o último nó.

O nó atual atua como um nó buffer, com sua ajuda podemos percorrer a lista e encontrar um nó que não aponta para lugar algum (*next == NULL).

struct Node* current = *head;

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

Por fim, é necessário tornar o novo nó newNode o último nó, o que significa que current->next deve ser igual a newNode. Agora, newNode é o último nó na lista.

Como tarefa, é necessário identificar e adicionar uma função para adicionar novos nós aos nós existentes.

Tarefa

Swipe to start coding

Crie uma função addNewNode que adiciona um novo nó ao final de uma lista ligada simples.

Dentro da função:

  1. Declare uma variável struct Node* newNode e crie um novo nó usando createNode(value).
  2. Verifique se a lista está vazia testando *head == NULL.
  3. Se a lista estiver vazia, atribua newNode a *head.
  4. Se a lista não estiver vazia, declare struct Node* current e atribua a ela *head.
  5. Percorra a lista usando um laço while até que current->next seja NULL.
  6. Após alcançar o último nó, defina current->next = newNode.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

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

bookAdicionando Elementos

Deslize para mostrar o menu

Para tornar sua lista simplesmente encadeada útil, é necessário adicionar nós a ela. Você irá implementar a lógica para inserir nós na lista. Você criará novos nós, conectará eles e os integrará para que a lista cresça dinamicamente à medida que elementos são adicionados.

Essa abordagem prática auxilia na compreensão exata do que ocorre nos bastidores.

Implementando a Inserção de Nós

Vamos escrever uma função simples para criar um nó. Esta função deve:

  • Receber como argumento um número do tipo int, que será armazenado no campo data do nó;
  • Criar um ponteiro para uma área de memória alocada dinamicamente (considerando o tamanho do nó);
  • Verificar o sucesso da alocação de memória para o nó;
  • Colocar o valor necessário (argumento da função) no campo data;
  • O ponteiro next deve ser NULL, já que a função cria apenas um nó;
  • A função deve retornar um ponteiro para a área de memória onde o valor está armazenado.

A função AddNewNode() recebe um ponteiro para ponteiro, pois pode alterar o valor do ponteiro para o primeiro nó (head) da lista, assim como o valor que será armazenado no novo nó:

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

Se a lista estiver vazia (*head == NULL), simplesmente atualizamos o ponteiro para o início da lista (*head) para apontar para o novo nó (newNode), nesse caso newNode se tornará o primeiro nó (nó cabeça). No caso de uma lista não vazia, utilizamos um loop para procurar o último nó.

O nó atual atua como um nó buffer, com sua ajuda podemos percorrer a lista e encontrar um nó que não aponta para lugar algum (*next == NULL).

struct Node* current = *head;

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

Por fim, é necessário tornar o novo nó newNode o último nó, o que significa que current->next deve ser igual a newNode. Agora, newNode é o último nó na lista.

Como tarefa, é necessário identificar e adicionar uma função para adicionar novos nós aos nós existentes.

Tarefa

Swipe to start coding

Crie uma função addNewNode que adiciona um novo nó ao final de uma lista ligada simples.

Dentro da função:

  1. Declare uma variável struct Node* newNode e crie um novo nó usando createNode(value).
  2. Verifique se a lista está vazia testando *head == NULL.
  3. Se a lista estiver vazia, atribua newNode a *head.
  4. Se a lista não estiver vazia, declare struct Node* current e atribua a ela *head.
  5. Percorra a lista usando um laço while até que current->next seja NULL.
  6. Após alcançar o último nó, defina current->next = newNode.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3
single

single

some-alt