Você está aqui: C ::: Estruturas de Dados ::: Lista Ligada Simples |
Como remover um nó no ínício de uma lista ligada simples em CQuantidade de visualizações: 1118 vezes |
Como remover um nó no ínicio de uma lista ligada simples em C Nesta dica mostraremos como é possível excluir o nó no início de uma lista ligada simples (linked list) em C. Veja a função: // função que permite remover um nó no início // da lista. A função retorna um // ponteiro para o início da lista struct No *remover_inicio(struct No *inicio){ struct No *n; // nó que será removido n = inicio; // aponta para o início da lista inicio = inicio->proximo; // o início aponta para o seu próximo Note que a função recebe um ponteiro para o início da lista e retorna também um ponteiro para o nó que assume a nova posição. Tenho o cuidado de verificar se a lista não está vazia antes de tentar fazer a exclusão. No exemplo eu fiz isso na função main(). Veja a listagem completa abaixo: #include <stdio.h> #include <stdlib.h> // estrutura Nó struct No{ int valor; struct No *proximo; }; // fim da estrutura Nó // função que permite exibir os valores de // todos os nós da lista void exibir(struct No *n){ if(n != NULL){ do{ printf("%d\n", n->valor); n = n->proximo; }while(n != NULL); } else printf("A lista esta vazia\n\n"); } // função que permite remover um nó no início // da lista. A função retorna um // ponteiro para o início da lista struct No *remover_inicio(struct No *inicio){ struct No *n; // nó que será removido n = inicio; // aponta para o início da lista inicio = inicio->proximo; // o início aponta para o seu próximo // mostra o nó removido printf("\nNo removido: %d\n", n->valor); free(n); // libera o nó que antes era o início return inicio; } // função que permite inserir nós no // final da lista. // veja que a função recebe o valor a ser // armazenado em cada nó e um ponteiro para o // início da lista. A função retorna um // ponteiro para o início da lista struct No *inserir_final(struct No *n, int v){ // reserva memória para o novo nó struct No *novo = (struct No*)malloc(sizeof(struct No)); novo->valor = v; // verifica se a lista está vazia if(n == NULL){ // é o primeiro nó...não deve apontar para // lugar nenhum novo->proximo = NULL; return novo; // vamos retornar o novo nó como sendo o início da lista } else{ // não está vazia....vamos inserir o nó no final // o primeiro passo é chegarmos ao final da lista struct No *temp = n; // vamos obter uma referência ao primeiro nó Ao executar esse código você terá o seguinte resultado: Valores presentes na lista ligada antes da remocao: 45 3 98 47 No removido: 45 Valores presentes na lista ligada apos a remocao: |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
AutoCAD Civil 3D - Como criar pontos COGO no AutoCAD Civil 3D |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |