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
Seção 1. Capítulo 4
single

single

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

Deslize para começar a programar

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 1. Capítulo 4
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

some-alt