single
Adicionando 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.
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:
- Declare uma variável
struct Node* newNodee crie um novo nó usandocreateNode(value). - Verifique se a lista está vazia testando
*head == NULL. - Se a lista estiver vazia, atribua
newNodea*head. - Se a lista não estiver vazia, declare
struct Node* currente atribua a ela*head. - Percorra a lista usando um laço
whileaté quecurrent->nextsejaNULL. - Após alcançar o último nó, defina
current->next = newNode.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo