Buscar

AV1 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 9 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 9 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 9, do total de 9 páginas

Prévia do material em texto

AV1 ESTRUTURA DE DADOS
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.
R = ENVIEI O CODIGO TAMBÉM EM UM BLOCO DE NOTAS, ESTÁ EM UM FORMATO MELHOR.
CÓDIGO
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
typedef struct sNodo{
 int info;
 struct sNodo *prox;
} Nodo;
typedef struct sListaSimplesEnc{
 Nodo *prim;
} ListaSimplesEnc;
void criarLista(ListaSimplesEnc *pList){
 pList->prim = NULL;
}
void mostrarLista(ListaSimplesEnc *pList){
 Nodo *p;
 printf("Lista: ");
 for (p = pList->prim; p != NULL; p = p->prox){
 printf("%d ->", p->info);
	}
}
void inserirIni(ListaSimplesEnc *pList, int v){
 Nodo *novo;
 novo = (Nodo*)malloc(sizeof(Nodo));
 if (novo != NULL){
 novo->info = v;
 novo->prox = pList->prim;
 pList->prim = novo;
 } else{
 printf("Memória Insuficiente\n");
 }
}
void removerIni(ListaSimplesEnc *pList){
 Nodo *pAux = pList->prim;
 if (pAux != NULL){
 pList->prim = pList->prim->prox;
 free(pAux);
 printf("Valor Removido\n");
 }
 else{
 printf("Lista Vazia\n");
 }
}
void inserirOrd(ListaSimplesEnc *pList, int v){
 Nodo *novo;
 novo = (Nodo*)malloc(sizeof(Nodo));
 if (novo != NULL){
 novo->info = v;
 Nodo *pAtu, *pAnt;
 pAnt = NULL;
 pAtu = pList->prim;
 while (pAtu != NULL && pAtu->info < v){
 pAnt = pAtu;
 pAtu = pAtu->prox;
 }
 novo->prox = pAtu;
 if (pAnt != NULL){
 pAnt->prox = novo;
 }
 else{
 pList->prim = novo;
 }
 }
 else{
 printf("Memória Insuficiente\n");
 }
}
void removerEle(ListaSimplesEnc *pList, int v){
 Nodo *pAtu, *pAnt;
 pAnt = NULL;
 pAtu = pList->prim;
 while (pAtu != NULL && pAtu->info != v){
 pAnt = pAtu;
 pAtu = pAtu->prox;
 }
 if (pAnt != NULL){
 if (pAtu != NULL) {
 pAnt->prox = pAtu->prox;
 free(pAtu);
 printf("Valor Removido\n");
 }
 else{
 printf("Valor não encontrado\n");
 }
 }
 else{
 printf("Lista Vazia\n");
 }
}
void removerTudo(ListaSimplesEnc *pList){
 Nodo *pAux = pList->prim;
 if (pAux != NULL){
 while (pAux != NULL){
 pList->prim = pAux->prox;
 free(pAux);
 pAux = pList->prim;
 }
 printf("Todos os elementos foram removidos!\n");
 }
 else{
 printf("Lista Vazia\n");
 }
}
void alterarEle(ListaSimplesEnc *pList, int v1, int v2){
 Nodo *pAtu, *pAnt;
 pAnt = NULL;
 pAtu = pList->prim;
 while (pAtu != NULL && pAtu->info != v1){
 pAnt = pAtu;
 pAtu = pAtu->prox;
 }
 if (pAnt != NULL){
 if (pAtu != NULL){
 pAtu->info = v2;
 printf("Valor alterado\n");
 }
 else{
 printf("Valor não encontrado\n");
 }
 }
 else{
 printf("Lista Vazia\n");
 }
}
int estaVazia(ListaSimplesEnc *pList) {
 return(pList->prim == NULL);
}
int main(){
 setlocale(LC_ALL, "portuguese");
 ListaSimplesEnc minhaLista;
 int valor, op, valorAlt;
 criarLista(&minhaLista);
 printf("Escolha uma opção:\n");
 while (1) {
 printf("\n(1) Inserir elemento no início da Lista\n");
 printf("(2) Inserir elemento em ordem (verifique se a lista está ordenada)\n");
 printf("(3) Remover elemento no início da Lista\n");
 printf("(4) Remover elemento específico da Lista\n");
 printf("(5) Mostrar Lista\n");
 printf("(6) Apagar todos os elementos da Lista\n");
 printf("(7) Alterar elemento da Lista\n");
 printf("(0) Sair\n");
 printf("?");
 scanf("%d", &op);
 system("cls");
 switch (op) {
 case 1: // inserir elemento no inicio
 printf("Valor?");
 scanf("%d", &valor);
 inserirIni(&minhaLista, valor);
 break;
 case 2: // inserir elemento ordenado
 printf("Valor?");
 scanf("%d", &valor);
 inserirOrd(&minhaLista, valor);
 break;
 case 3: // remover o primeiro
 removerIni(&minhaLista);
 break;
 case 4: // remover determinado elemento
 printf("Valor?");
 scanf("%d", &valor);
 removerEle(&minhaLista, valor);
 break;
 case 5: // mostrar lista
 if (estaVazia(&minhaLista)) {
 printf("Lista vazia\n");
 }
 else {
 mostrarLista(&minhaLista);
 }
 break;
 case 6: // apagar todos os elementos da Lista
 removerTudo(&minhaLista);
 break;
 case 7: // alterar um elemento
 printf("Valor a ser alterado?");
 scanf("%d", &valor);
 printf("Novo valor?");
 scanf("%d", &valorAlt);
 alterarEle(&minhaLista, valor, valorAlt);
 break;
 case 0: // abandonar o programa
 removerTudo(&minhaLista);
 exit(0);
 default:
 printf("Opção inexistente!\n");
 }
 }
}

Outros materiais