Buscar

Estrutura de Dados (IL10301)- Paulo Vitor Santos Almeida

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

Continue navegando