Lista Simplesmente Encadeada
Publicado por Fagner Amaral de Souza Candido 17/06/2008
[ Hits: 41.162 ]
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); }
3 EP - Poli USP - Angry Birds (angry bixos)
Um Classico exercicio de Lógica de Programação
Rotina para controle de portas paralelas em C.
Jogo Final Fight - Haggar (com gráficos)
POGRAMA EM C REGISTRO DE CADASTRO ALTERAR E REMOVER CLIENTES PRODUTOS
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
Direcionar uma URL para Outra No Mikrotik (2)
E aí? O Warsaw já está funcionando no Debian 13? (3)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (5)