Lista Simplesmente Encadeada
Publicado por Fagner Amaral de Souza Candido 17/06/2008
[ Hits: 41.232 ]
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);
}
Converter arquivos Bitmap para ASCII-art
1o. joguinho Labirinto (com graficos).c
3 EP - Poli USP - Angry Birds (angry bixos)
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)









