Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: C ::: Estruturas de Dados ::: Lista Ligada Simples

Inserindo depois de um determinado nó em uma lista encadeada simples usando a linguagem C

Quantidade de visualizações: 1454 vezes
Inserindo depois de um determinado nó em uma lista encadeada simples usando C

Em algumas situações nós precisamos inserir o novo nó depois de um determinado nó na lista encadeada simples. Veja, por exemplo, uma lista com o seguintes valores:

45 | 3 | 98 | 47

Suponha que queremos inserir o valor 50 depois do 98, então o novo conteúdo da lista será:

45 | 3 | 98 | 50 | 47

Observe que neste exemplo eu tratei o caso de inserir depois do primeiro nó, ou seja, depois do 45, mas não tratei a lista vazia. Há também a questão do erro de acesso de memória caso o usuário queira inserir depois de um nó não existente (não tratada). Veja o código completo:

#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 inserir um novo nó
// depois de um determinado valor
struct No *inserir_depois_valor(struct No *n, int v, 
  int v_depois){
  // reserva memória para o novo nó
  struct No *novo = (struct No*)malloc(sizeof(struct No));
  novo->valor = v;

  struct No *temp = n; // aponta para o início da lista
  // guarda o nó depois do nó atual
  struct No *depois = temp;
  
  // enquanto for diferente do valor que estamos procurando
  while(depois->valor != v_depois){
    depois = temp; // depois recebe temp
    // e temp recebe o seu próximo
    temp = temp->proximo;
  }
  
  // ATENÇÃO: não estamos tratando a condição
  // de lista vazia. Para isso veja minha dica
  // sobre como inserior no início da lista
  
  // vamos inserir depois do primeiro nó
  if(depois == n){
    // o próximo do novo nó aponta para
    // o segundo nó
    novo->proximo = n->proximo;
    // o primeiro nó aponta para o novo nó
    n->proximo = novo;
  }
  else{
    // o proximo do anterior é o novo nó
    depois->proximo = novo;
    // e o próximo do novo nó é temp
    novo->proximo = temp;
  }

  return n;
}

// 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


Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 28 usuários muito felizes estudando em nosso site.