Lista Simplesmente Encadeada
Publicado por Fagner Amaral de Souza Candido 17/06/2008
[ Hits: 41.006 ]
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); }
Script MakePach para correção de platarforma 32 bits para 64
Jogo Windows Invaders (com gráficos)
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Como abrir o pycharm no linux (2)
VMs e Interfaces de Rede desapareceram (12)