Lista Simplesmente Encadeada
Publicado por Fagner Amaral de Souza Candido 17/06/2008
[ Hits: 40.930 ]
Homepage: https://github.com/fagnercandido
Download listaEncadeadaSimples.c
Para aqueles que necessitem de um exemplo simples de lista encadeada, usando alocação dinâmica, eis um exemplo bem simples. A inserção e remoção são feitas na cabeça, logo a ordenação foi deixada de lado, para que a compreesão pudesse ser melhor.
Críticas construtivas, sugestões ou correções são sempre bem-vindas.
Espero que seja de ajuda.
Abraços
// Autor : Fagner Candido /* Sintese Objetivo: Implementar uma Lista Simplesmente Encadeada Entrada : Valores Inteiros. Saida : A busca Data : 17/05/2008 */ #include <stdio.h> #include <stdlib.h> /* Estrutura que define a Lista Lembrando que a a instrução: struct celulaLista *proximo é uma estrutura auto-referenciada, ou seja, neste caso é uma estrutura que aponta para a próxima estrutura. */ typedef struct celulaLista{ int informacao; struct celulaLista *proximo; }celula; int main(){ // Declarações celula *pLista; int opcao = 0; // Funções void initLista(celula **pRecebido); void insertLista(celula **pRecebido); void buscaListaSimples(celula **pRecebido); void removeElementoListaSimples(celula **pRecebido); int leValor(int *valorRecebido); // Instruções pLista = (celula *)malloc(sizeof(struct celulaLista)); initLista(&pLista); for(;;){ printf("\n1 - Inserir : "); printf("\n2 - Consultar: "); printf("\n3 - Remover"); printf("\n4 - Sair\n"); scanf("%d", &opcao); opcao = leValor(&opcao); switch(opcao) { case 1: insertLista(&pLista); break; case 2: buscaListaSimples(&pLista); break; case 3: removeElementoListaSimples(&pLista); break; case 4: exit(0); } } return 0; } /* Inicialização da Lista Encadeada */ void initLista(celula **pRecebido){ (*pRecebido)->proximo = NULL; } /* Função para Inserção no Início */ void insertLista(celula **pRecebido){ // Declarações celula *temporario; int valor; // Instruções printf("\nInforme um Valor a ser Inserido : "); scanf("%d", &valor); temporario = (celula *)malloc(sizeof(celula)); temporario->informacao = valor; temporario->proximo = (*pRecebido)->proximo; (*pRecebido)->proximo = temporario; } /* Função para Percorrer Elementos */ void buscaListaSimples(celula **pRecebido){ // Declarações celula *temporario; // Instruções if((*pRecebido)->proximo == NULL){ printf("Lista Vazia!\n"); } else{ temporario = (celula *)malloc(sizeof(celula)); temporario = (*pRecebido)->proximo; while(temporario != NULL){ printf("Valor : %d\n", temporario->informacao); temporario = temporario->proximo; } } } /* Remove Elemento da Cabeça */ void removeElementoListaSimples(celula **pRecebido){ // Declarações celula *temporario; // Instruções if((*pRecebido)->proximo == NULL){ printf("\nLista Vazia!"); } else{ temporario = (*pRecebido)->proximo; (*pRecebido)->proximo = temporario->proximo; free(temporario); } } /* Opção para Validação da Entrada */ int leValor(int *valorRecebido){ // Declarações // Instruções while((*valorRecebido > 4) || (*valorRecebido < 1)){ printf("Opcao Invalida. Informe novamente : \n"); scanf("%d", &(*valorRecebido)); } return(*valorRecebido); }
Jantar dos Filósofos - Programação Paralela
Funções com número variável de argumentos
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Wifi não funciona no Aspire ES 15 com o Debian (8)
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta