Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

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

Mais conteúdos dessa disciplina