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