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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

UVA – Universidade Veiga de Almeida 
 Curso: Sistemas de Informação 
 
 
 
 
 
 
 Nomes: Pedro de Souza Pereira Garrido 
 
 
 
 
 
 
 
 Avaliação AVA1 – Estrutura de Dados 
 
 
 
 
 
 
 
 Cabo Frio 
 2023 
 
 
 
 
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. 
 
 
Resolução: 
 
#include <stdio.h> 
#include <stdlib.h> 
 
// Definição da estrutura do nó 
struct Node { 
 int data; 
 struct Node* next; 
}; 
 
// Função para inserção no início da lista 
void insertAtBeginning(struct Node** head, int newData) { 
 struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); 
 newNode->data = newData; 
 newNode->next = *head; 
 *head = newNode; 
} 
 
// Função para exibição da lista 
void displayList(struct Node* head) { 
 struct Node* current = head; 
 while (current != NULL) { 
 printf("%d -> ", current->data); 
 current = current->next; 
 } 
 printf("NULL\n"); 
} 
 
// Função para consulta na lista 
int searchInList(struct Node* head, int searchData) { 
 struct Node* current = head; 
 while (current != NULL) { 
 if (current->data == searchData) { 
 return 1; // Encontrado 
 } 
 current = current->next; 
 } 
 return 0; // Não encontrado 
} 
 
// Função para atualização na lista 
void updateInList(struct Node* head, int oldData, int newData) { 
 struct Node* current = head; 
 while (current != NULL) { 
 if (current->data == oldData) { 
 current->data = newData; 
 return; 
 } 
 current = current->next; 
 } 
} 
 
// Função para remoção na lista 
void removeFromList(struct Node** head, int dataToRemove) { 
 struct Node* current = *head; 
 struct Node* prev = NULL; 
 
 // Caso o nó a ser removido seja o primeiro 
 if (current != NULL && current->data == dataToRemove) { 
 *head = current->next; 
 free(current); 
 return; 
 } 
 
 // Busca pelo nó a ser removido 
 while (current != NULL && current->data != dataToRemove) { 
 prev = current; 
 current = current->next; 
 } 
 
 // Se o nó não estiver presente 
 if (current == NULL) { 
 printf("Elemento %d não encontrado na lista.\n", dataToRemove); 
 return; 
 } 
 
 // Desvincula o nó da lista 
 prev->next = current->next; 
 
 // Libera a memória do nó removido 
 free(current); 
} 
 
// Função principal 
int main() { 
 struct Node* head = NULL; 
 int choice, data, searchData, newData, dataToRemove; 
 
 do { 
 printf("\n1. Inclusao\n2. Consulta\n3. Alteracao\n4. Remocao\n5. Exibir Lista\n0. Sair\nEscolha 
uma opcao: "); 
 scanf("%d", &choice); 
 
 switch (choice) { 
 case 1: 
 printf("Digite o valor a ser incluido: "); 
 scanf("%d", &data); 
 insertAtBeginning(&head, data); 
 break; 
 
 case 2: 
 printf("Digite o valor a ser consultado: "); 
 scanf("%d", &searchData); 
 if (searchInList(head, searchData)) { 
 printf("Elemento %d encontrado na lista.\n", searchData); 
 } else { 
 printf("Elemento %d nao encontrado na lista.\n", searchData); 
 } 
 break; 
 
 case 3: 
 printf("Digite o valor a ser alterado: "); 
 scanf("%d", &data); 
 printf("Digite o novo valor: "); 
 scanf("%d", &newData); 
 updateInList(head, data, newData); 
 break; 
 
 case 4: 
 printf("Digite o valor a ser removido: "); 
 scanf("%d", &dataToRemove); 
 removeFromList(&head, dataToRemove); 
 break; 
 
 case 5: 
 printf("Lista atual: "); 
 displayList(head); 
 break; 
 
 case 0: 
 printf("Saindo do programa.\n"); 
 break; 
 
 default: 
 printf("Opcao invalida. Tente novamente.\n"); 
 } 
 } while (choice != 0); 
 
 return 0; 
}

Mais conteúdos dessa disciplina