Lista Simplesmente Encadeada
Publicado por Fagner Amaral de Souza Candido 17/06/2008
[ Hits: 40.802 ]
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); }
Calculando PI usando série de Leibniz
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Não consigo acessar os modos de desempenho (1)
Criar um script para testar pen drive (5)
Problema com alias usando locate (4)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba