Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 UNIVERSIDADE VEIGA DE ALMEIDA SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMA AVA1- ESTRUTURA DE DADOS (IL10301) PROFESSOR: LUCIANO DE PINNA VIEIRA ALUNO: PAULO VITOR SANTOS ALMEIDA MATRÍCULA: 1220102618 RIO DE JANEIRO – RJ 2023 https://www.uva.br/ https://www.uva.br/ https://www.uva.br/ https://www.uva.br/ https://www.uva.br/ https://www.uva.br/ 2 Estrutura de dados lista 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 #include <stdio.h> #include <stdlib.h> #include <locale.h> typedef struct sNode { int data; struct sNode *next; } Node; typedef struct sLinkedList { Node *start; Node *end; 3 } LinkedList; void initialize(LinkedList *list) { list->start = NULL; list->end = NULL; } void displayList(LinkedList *list) { Node *currentNode; printf("Lista: "); for (currentNode = list->start; currentNode != NULL; currentNode = currentNode->next) { printf("%d ->> ", currentNode->data); } printf("NULL\n"); } void insert(LinkedList *list, int value) { Node *newNode; newNode = (Node *)malloc(sizeof(Node)); if (newNode != NULL) { newNode->data = value; Node *current, *previous; previous = NULL; current = list->start; 4 while (current != NULL && current->data < value) { previous = current; current = current->next; } newNode->next = current; if (previous != NULL) { previous->next = newNode; } else { list->start = newNode; } } else { printf("Memória Insuficiente\n"); } } void removeElement(LinkedList *list, int value) { Node *current, *previous; previous = NULL; current = list->start; while (current != NULL && current->data != value) { previous = current; current = current->next; } if (previous != NULL) { 5 if (current != NULL) { previous->next = current->next; free(current); printf("Valor Removido\n"); } else { printf("Valor não encontrado\n"); } } else { printf("Lista Vazia\n"); } } void alterElement(LinkedList *list, int oldValue, int newValue) { Node *current, *previous; previous = NULL; current = list->start; while (current != NULL && current->data != oldValue) { previous = current; current = current->next; } if (previous != NULL) { if (current != NULL) { current->data = newValue; printf("Alterado Com Sucesso! ;-D\n"); 6 } else { printf("Valor Indisponível... :-(\n"); } } else { printf("Lista Vazia\n"); } } int isEmpty(LinkedList *list) { return (list->start == NULL); } void clearList(LinkedList *list) { Node *temp = list->start; if (temp != NULL) { while (temp != NULL) { list->start = temp->next; free(temp); temp = list->start; } printf("Todos os elementos foram removidos!\n"); } else { printf("Lista Vazia\n"); } 7 } int main() { setlocale(LC_ALL, "portuguese"); LinkedList createdList; int value1, option, value2; initialize(&createdList); printf("AVA1 - Paulo Vitor Santos Almeida \n"); while (1) { printf("\n 1 - Inserir Elemento\n"); printf(" 2 - Mostrar Lista\n"); printf(" 3 - Alterar Elemento da Lista\n"); printf(" 4 - Remover Elemento da Lista\n"); printf(" 5 - Sair\n"); printf("\n Digite o Número da Opção: "); scanf("%d", &option); system("cls"); switch (option) { case 1: printf("Valor:"); scanf("%d", &value1); insert(&createdList, value1); break; case 2: 8 if (isEmpty(&createdList)) { printf("Lista Vazia...\n"); } else { displayList(&createdList); } break; case 3: printf("Valor Para Ser Alterado:"); scanf("%d", &value1); printf("Novo Valor:"); scanf("%d", &value2); alterElement(&createdList, value1, value2); break; case 4: printf("Valor:"); scanf("%d", &value1); removeElement(&createdList, value1); break; case 5: clearList(&createdList); exit(0); default: printf("Opção Inválida!\n"); } 9 } return 0; } Referências biográficas: Análise de Algoritmo e Estrutura de dados. Disponível em: https://www.ime.usp.br/~mota/livros/livro_AAED.pdf . Acesso em: 16 de novembro de 2023 Algoritmo e Estrutura de Dados: https://cm-kls- content.s3.amazonaws.com/201801/INTERATIVAS_2_0/ALGORITMOS_E_ESTRUTURA_DE_DA DOS/U1/LIVRO_UNICO.pdf Acesso em: 16 de novembro de 2023 GOODRICH, M. T.; TAMASSIA, R. Estruturas de dados & algoritmos em Java. 5. ed. São Paulo: Bookman, 2013. https://www.ime.usp.br/~mota/livros/livro_AAED.pdf https://cm-kls-content.s3.amazonaws.com/201801/INTERATIVAS_2_0/ALGORITMOS_E_ESTRUTURA_DE_DADOS/U1/LIVRO_UNICO.pdf https://cm-kls-content.s3.amazonaws.com/201801/INTERATIVAS_2_0/ALGORITMOS_E_ESTRUTURA_DE_DADOS/U1/LIVRO_UNICO.pdf https://cm-kls-content.s3.amazonaws.com/201801/INTERATIVAS_2_0/ALGORITMOS_E_ESTRUTURA_DE_DADOS/U1/LIVRO_UNICO.pdf
Compartilhar