Buscar

AVA1 - Estrutura de dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Universidade Veiga de Almeida
Maria Juciara Carvalho da Costa
AVA 1
Estrutura de dados
Professor Paulo Márcio Souza Freire
Rio de Janeiro
2021
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.
Segue abaixo a resolução proposta no enunciado anterior:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
typedef struct sPonto{
int dados;
struct sPonto *proximo;
} Ponto;
typedef struct sListas{
Ponto *inicio;
Ponto *fim;
} Listas;
void criar(Listas *lista){
lista->inicio = NULL;
lista->fim = NULL;
}
//OPCAO MOSTRAR LISTA 2
void consulta(Listas *lista){
Ponto *p;
printf("Lista: ");
for (p = lista->inicio; p != NULL; p = p->proximo){
printf("%d ->> ", p->dados);
}
printf("NULL\n");
}
//OPCAO INSERIR 1
void inserir(Listas *lista, int a){
Ponto *novo;
novo = (Ponto*)malloc(sizeof(Ponto));
if (novo != NULL){
novo->dados = a;
Ponto *atual, *anterior;
anterior = NULL;
atual = lista->inicio;
while (atual != NULL && atual->dados < a){
anterior = atual;
atual = atual->proximo;
}
novo->proximo = atual;
if (anterior != NULL){
anterior->proximo = novo;
}
else{
lista->inicio = novo;
}
}
else{
printf("Memória Insuficiente\n");
}
}
//OPCAO REMOVER ELEMENTO 4
void remover(Listas *lista, int a){
Ponto *atual, *anterior;
anterior = NULL;
atual = lista->inicio;
while (atual != NULL && atual->dados != a){
anterior = atual;
atual = atual->proximo;
}
if (anterior != NULL){
if (atual != NULL) {
anterior->proximo = atual->proximo;
free(atual);
printf("Valor Removido\n");
}
else{
printf("Valor não encontrado\n");
}
}
else{
printf("Lista Vazia\n");
}
}
//OPCAO ALTERAR ELEMENTO 3
void alterar(Listas *lista, int a, int b){
Ponto *atual, *anterior;
anterior = NULL;
atual = lista->inicio;
while (atual != NULL && atual->dados != a){
anterior = atual;
atual = atual->proximo;
}
if (anterior != NULL){
if (atual != NULL){
atual->dados = b;
printf("Alterado Com Sucesso! ;-D\n");
}
else{
printf("Valor Indisponível... :-(\n");
}
}
else{
printf("Lista Vazia\n");
}
}
// OPCAO SAIR e RESETAR a MEMORIA - 5
int vazia(Listas *lista) {
return(lista->inicio == NULL);
}
void reset(Listas *lista){
Ponto *auxiliar = lista ->inicio;
if (auxiliar != NULL){
while (auxiliar != NULL){
lista->inicio = auxiliar->proximo;
free(auxiliar);
auxiliar = lista->inicio;
}
printf("Todos os elementos foram removidos!\n");
}
else{
printf("Lista Vazia\n");
}
}
void main(){
setlocale(LC_ALL, "portuguese");
Listas listacriada;
int valor1, op, valor2;
criar(&listacriada);
printf("ESTRUTURA DE DADOS \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", &op);
system("cls");
switch (op) {
case 1: // inserir elemento em ordem
printf("Valor:");
scanf("%d", &valor1);
inserir(&listacriada, valor1);
break;
case 2: // mostrar lista
if (vazia(&listacriada)) {
printf("Lista Vazia...\n");
}
else {
consulta(&listacriada);
}
break;
case 3: // alterar um elemento
printf("Valor Para Ser Alterado:");
scanf("%d", &valor1);
printf("Novo Valor:");
scanf("%d", &valor2);
alterar(&listacriada, valor1, valor2);
break;
case 4: // remover determinado elemento
printf("Valor:");
scanf("%d", &valor1);
remover(&listacriada, valor1);
break;
case 5: // abandonar o programa
reset(&listacriada);
exit(0);
default:
printf("Opção Inválida!\n");
}
}
}

Continue navegando