Buscar

AVA 1 - Estrutura de dados - Lista - UVA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

UNIVERSIDADE VEIGA DE ALMEIDA 
GRADUAÇÃO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 
DISCIPLINA: ESTRUTURA DE DADOS 
PROF.: PAULO MÁRCIO SOUZA FREIRE 
 
 
 
 
 
 
 
 
EDUARDO FERREIRA TRINDADE 
 
 
 
TRABALHO DA DISCIPLINA (AVA1) 
ESTRUTURA DE DADOS - LISTA 
 
 
 
 
 
 
 
 
 
NITERÓI 
2022 
2 
 
Trabalho da disciplina – AVA 1 
 
(Transcrição do enunciado) 
 
A lista linear é uma estrutura de dados em que todos os elementos são 
armazenados de forma sequencial, e seu encadeamento pode ocorrer de forma 
simples ou dupla. 
 
Você é programador de computador em linguagem C da empresa Renalf Mega Data 
e precisa realizar as operações elementares com os dados de uma lista 
simplesmente encadeada, visando à listagem de todos os dados armazenados 
nessa estrutura de dados. 
 
 
Procedimentos para elaboração do TD: 
 
Desenvolva um programa de computador que permita ao usuário realizar as 
operações elementares – inclusão, consulta, alteração e remoção – com a estrutura 
de dados lista simplesmente encadeada.1 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 Enunciado da primeira avaliação disponível em: 
https://uva.instructure.com/courses/31426/pages/enunciado-da-avaliacao-1?module_item_id=496568 
acessado em: 08/11/2022. 
https://uva.instructure.com/courses/31426/pages/enunciado-da-avaliacao-1?module_item_id=496568
3 
 
ESTRUTURA DE DADOS - LISTA 
 
 
#include <stdio.h> 
#include <stdlib.h> 
 
typedef struct no { 
 int valor; 
 struct no *proximo; 
} No; 
 
typedef struct lista { 
 No *inicio; 
} Lista; 
 
void criar_lista(Lista *lista) { 
 lista->inicio = NULL; 
} 
 
int verificarListaVazia(Lista *lista) { 
 return (lista->inicio == NULL); 
} 
 
void imprimir(Lista lista) { 
 No *no = lista.inicio; 
 
 printf("\n-------------------------\n"); 
 printf("Lista: "); 
 
 while (no) { 
 printf("%d ", no->valor); 
 no = no->proximo; 
 } 
 
 printf("\n-------------------------\n"); 
} 
 
void inserir(Lista *lista, int numero) { 
 No *aux, *novo = malloc(sizeof(No)); 
 
 if (novo) { 
 novo->valor = numero; 
 novo->proximo = NULL; 
 
4 
 
 if (lista->inicio == NULL) { 
 lista->inicio = novo; 
 } 
 else { 
 aux = lista->inicio; 
 while (aux->proximo) { 
 aux = aux->proximo; 
 } 
 aux->proximo = novo; 
 } 
 } 
 else { 
 printf("\n-------------------------\n"); 
 printf("Erro ao alocar memoria!\n"); 
 printf("-------------------------\n"); 
 } 
} 
 
int alterar(Lista *lista, int antigo, int novo) { 
 No *aux = NULL; 
 
 aux = lista->inicio; 
 
 while (aux && aux->valor != antigo) { 
 aux = aux->proximo; 
 } 
 if (aux) { 
 aux->valor = novo; 
 return 1; 
 } 
 else { 
 return 0; 
 } 
} 
 
No* remover(Lista *lista, int numero) { 
 No *aux, *remover = NULL; 
 
 if (lista->inicio) { 
 if (lista->inicio->valor == numero) { 
 remover = lista->inicio; 
 lista->inicio = remover->proximo; 
 } 
 else { 
 aux = lista->inicio; 
5 
 
 
 while(aux->proximo && aux->proximo->valor != numero) 
{ 
 aux = aux->proximo; 
 } 
 if (aux->proximo) { 
 remover = aux->proximo; 
 aux->proximo = remover->proximo; 
 } 
 } 
 } 
} 
 
No* buscar(Lista *lista, int numero) { 
 No *aux, *no = NULL; 
 
 aux = lista->inicio; 
 
 while (aux && aux->valor != numero) { 
 aux = aux->proximo; 
 } 
 if (aux) { 
 no = aux; 
 } 
 
 return no; 
} 
 
void limparLista(Lista *lista) { 
 No *aux = lista->inicio; 
 
 if (aux) { 
 while (aux) { 
 lista->inicio = aux->proximo; 
 free(aux); 
 aux = lista->inicio; 
 } 
 
 printf("\n-------------------------\n"); 
 printf("A lista foi limpa!\n"); 
 printf("Todos os elementos foram removidos!\n"); 
 printf("-------------------------\n"); 
 } 
 else { 
 printf("\n-------------------------\n"); 
6 
 
 printf("A lista ja esta vazia!\n"); 
 printf("-------------------------\n"); 
 } 
} 
 
int main() { 
 int opcao, valor, novo, alterado; 
 No *removido, *busca; 
 Lista lista; 
 criar_lista(&lista); 
 
 while (1) { 
 printf("\n\t[ 1 ] Mostrar Lista\n" 
 "\t[ 2 ] Inserir Valor\n" 
 "\t[ 3 ] Alterar Valor\n" 
 "\t[ 4 ] Remover Valor\n" 
 "\t[ 5 ] Buscar Valor\n" 
 "\t[ 6 ] Limpar Lista\n" 
 "\t[ 0 ] Sair\n\n"); 
 
 printf("Digite o numero da opcao: "); 
 scanf("%d", &opcao); 
 
 switch (opcao) { 
 
 case 1: 
 if (verificarListaVazia(&lista)) { 
 printf("\n-------------------------\n"); 
 printf("Lista Vazia!\n"); 
 printf("-------------------------\n"); 
 } 
 else { 
 imprimir(lista); 
 } 
 break; 
 
 case 2: 
 printf("Digite um valor: "); 
 scanf("%d", &valor); 
 inserir(&lista, valor); 
 
 printf("\n-------------------------\n"); 
 printf("Elemento INSERIDO com sucesso!\n"); 
 printf("-------------------------\n"); 
 break; 
7 
 
 
 case 3: 
 printf("Digite o valor a ser alterado: "); 
 scanf("%d", &valor); 
 printf("Digite o novo valor: "); 
 scanf("%d", &novo); 
 alterado = alterar(&lista, valor, novo); 
 
 if (alterado) { 
 printf("\n-------------------------\n"); 
 printf("Elemento ALTERADO com sucesso!\n"); 
 printf("-------------------------\n"); 
 } 
 else { 
 printf("\n-------------------------\n"); 
 printf("Valor Nao Encontrado!\n"); 
 printf("-------------------------\n"); 
 } 
 break; 
 
 case 4: 
 printf("Digite um valor a ser removido: "); 
 scanf("%d", &valor); 
 removido = remover(&lista, valor); 
 
 if (removido) { 
 printf("\n-------------------------\n"); 
 printf("Elemento REMOVIDO com sucesso!\n"); 
 printf("-------------------------\n"); 
 } 
 else { 
 printf("\n-------------------------\n"); 
 printf("Valor Nao Encontrado!\n"); 
 printf("-------------------------\n"); 
 } 
 break; 
 
 case 5: 
 printf("Digite um valor a ser buscado: "); 
 scanf("%d", &valor); 
 busca = buscar(&lista, valor); 
 
 if (busca) { 
 printf("\n-------------------------\n"); 
 printf("Valor encontrado: %d\n", busca->valor); 
8 
 
 printf("-------------------------\n"); 
 } 
 else { 
 printf("\n-------------------------\n"); 
 printf("Valor Nao Encontrado!\n"); 
 printf("-------------------------\n"); 
 } 
 break; 
 
 case 6: 
 limparLista(&lista); 
 break; 
 
 case 0: 
 printf("\n-------------------------\n"); 
 printf("Programa Finalizado!\n"); 
 printf("-------------------------\n"); 
 exit(0); 
 
 default: 
 printf("\n-------------------------\n"); 
 printf("Opcao Invalida!\n"); 
 printf("-------------------------\n"); 
 break; 
 } 
 } 
 return 0; 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
9 
 
Referências Bibliográficas: 
 
 
BOENTE, Alfredo Nazareno Pereira. Estrutura de dados [livroeletrônico]. Rio de 
Janeiro: UVA, 2019. 91 p. Disponível em: 
https://uva.instructure.com/courses/31426/modules/items/496561. Acesso em: 08 
nov. 2022. 
https://uva.instructure.com/courses/31426/modules/items/496561

Outros materiais