Prévia do material em texto
CENTRO UNIVERSITÁRIO JORGE AMADO
Sistemas de Informação EAD
Aluno: Matheus Lino Lima
Matrícula: 2230203277
Disciplina: Estrutura de Dados
Tutor: ADISON LUIZ BATISTA MARQUES
Trabalho da Disciplina - AVA 1
Salvador/BA
2024
· 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.
· Código criado
#include
#include
struct No {
int dado;
struct No* proximo;
};
void inserirNoInicio(struct No** cabeca, int novoDado) {
struct No* novoNo = (struct No*)malloc(sizeof(struct No));
novoNo->dado = novoDado;
novoNo->proximo = *cabeca;
*cabeca = novoNo;
}
void exibirLista(struct No* cabeca) {
struct No* atual = cabeca;
while (atual != NULL) {
printf("%d -> ", atual->dado);
atual = atual->proximo;
}
printf("NULL\n");
}
int consultarLista(struct No* cabeca, int dadoConsulta) {
struct No* atual = cabeca;
while (atual != NULL) {
if (atual->dado == dadoConsulta) {
return 1;
}
atual = atual->proximo;
}
return 0;
}
void atualizarLista(struct No* cabeca, int dadoAntigo, int dadoNovo) {
struct No* atual = cabeca;
while (atual != NULL) {
if (atual->dado == dadoAntigo) {
atual->dado = dadoNovo;
return;
}
atual = atual->proximo;
}
}
void removerDaLista(struct No** cabeca, int dadoRemover) {
struct No* atual = *cabeca;
struct No* anterior = NULL;
if (atual != NULL && atual->dado == dadoRemover) {
*cabeca = atual->proximo;
free(atual);
return;
}
while (atual != NULL && atual->dado != dadoRemover) {
anterior = atual;
atual = atual->proximo;
}
if (atual == NULL) {
printf("Elemento %d não encontrado na lista.\n", dadoRemover);
return;
}
anterior->proximo = atual->proximo;
free(atual);
}
int main() {
struct No* cabeca = NULL;
int opcao, dado, dadoConsulta, dadoNovo, dadoRemover;
do {
printf("\n1. Inclusão\n2. Consulta\n3. Alteração\n4. Remoção\n5. Exibir Lista\n0. Sair\nEscolha uma opção: ");
scanf("%d", &opcao);
switch (opcao) {
case 1:
printf("Digite o valor a ser incluído: ");
scanf("%d", &dado);
inserirNoInicio(&cabeca, dado);
break;
case 2:
printf("Digite o valor a ser consultado: ");
scanf("%d", &dadoConsulta);
if (consultarLista(cabeca, dadoConsulta)) {
printf("Elemento %d encontrado na lista.\n", dadoConsulta);
} else {
printf("Elemento %d não encontrado na lista.\n", dadoConsulta);
}
break;
case 3:
printf("Digite o valor a ser alterado: ");
scanf("%d", &dado);
printf("Digite o novo valor: ");
scanf("%d", &dadoNovo);
atualizarLista(cabeca, dado, dadoNovo);
break;
case 4:
printf("Digite o valor a ser removido: ");
scanf("%d", &dadoRemover);
removerDaLista(&cabeca, dadoRemover);
break;
case 5:
printf("Lista atual: ");
exibirLista(cabeca);
break;
case 0:
printf("Saindo do programa...\n");
break;
default:
printf("Opção inválida! Tente novamente.\n");
}
} while (opcao != 0);
return 0;
}
REFERÊNCIAS BIBLIOGRÁFICAS:
E-book Estrutura de Dados, Alfredo Nazareno Pereira Boente, Disponível em: https://unijorge.instructure.com/courses/40628/modules/items/570907
image1.png