Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
VivianMachado0 authored Jan 17, 2023
1 parent 238ef2a commit 2ef2881
Show file tree
Hide file tree
Showing 4 changed files with 655 additions and 0 deletions.
276 changes: 276 additions & 0 deletions Lista Encadeada/exercicios/funcoes.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,276 @@
#include <iostream>
#include <windows.h>
#include "lista.hpp"

#define MAXTAM 5

using namespace std;

void CriaListaVazia(TipoLista *lista)
{
if (!listaCriada)
{
lista->primeiro = new TipoElemento;
lista->ultimo = lista->primeiro;
lista->ultimo->prox = NULL;
listaCriada = true;
}
else
{
cout << "Lista já existe!";
}
Sleep(1500);
}

bool VerificaListaVazia(TipoLista *lista)
{
return (lista->primeiro == lista->ultimo);
}

int TamanhoLista(TipoLista *lista)
{
return lista->tamanho;
}

void AtualizaUltimo(TipoLista *lista)
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux->prox != NULL)
{
aux = aux->prox;
}
lista->ultimo = aux;
}

void InsereListaUltimo(TipoLista *lista, TipoItem *item)
{
lista->ultimo->prox = new TipoElemento;
lista->ultimo = lista->ultimo->prox;
lista->ultimo->item = *item;
lista->ultimo->prox = NULL;
lista->tamanho++;
id++;
}

void ImprimeLista(TipoLista lista)
{
if (VerificaListaVazia(&lista))
{
cout << "Lista vazia!\n";
Sleep(1000);
return;
}
Apontador aux;
aux = lista.primeiro->prox;
while (aux != NULL)
{
cout << "ID: " << aux->item.id << endl;
cout << "Nome: " << aux->item.nome << endl;
cout << "Telefone: " << aux->item.telefone << endl;
cout << "Celular: " << aux->item.celular << endl;
cout << "Email: " << aux->item.email << endl;
cout << "Aniversario: " << aux->item.aniversario.dia << "/" << aux->item.aniversario.mes << endl
<< endl;
aux = aux->prox;
}
system("pause");
}

bool PesquisaItem(TipoLista *lista, char nome[])
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux != NULL)
{
if (strcmp(aux->item.nome, nome) == 0)
{
return true;
}
aux = aux->prox;
}
return false;
}

bool PesquisaItemPorId(TipoLista *lista, int id)
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux != NULL)
{
if (aux->item.id == id)
{
return true;
}
aux = aux->prox;
}
return false;
}

bool PesquisaItemPorEmail(TipoLista *lista, char email[])
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux != NULL)
{
if (strcmp(aux->item.email, email) == 0)
{
return true;
}
aux = aux->prox;
}
return false;
}

int Atualiza(TipoLista *lista, TipoItem item, char valor[], int campo)
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux != NULL)
{
if (strcmp(aux->item.nome, item.nome) == 0)
{
if (campo == 1)
{
strcpy(aux->item.nome, valor);
return 1;
}
else if (campo == 2)
{
strcpy(aux->item.telefone, valor);
return 1;
}
else if (campo == 3)
{
strcpy(aux->item.celular, valor);
return 1;
}
else if (campo == 4)
{
strcpy(aux->item.email, valor);
return 1;
}
}
aux = aux->prox;
}
return 0;
}

int AtualizaAniversario(TipoLista *lista, TipoItem item, int dia, int mes)
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux != NULL)
{
if (strcmp(aux->item.nome, item.nome) == 0)
{
aux->item.aniversario.dia = dia;
aux->item.aniversario.mes = mes;
return 1;
}
aux = aux->prox;
}
return 0;
}

void ImprimeItem(TipoLista *lista, char nome[])
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux != NULL)
{
if (strcmp(aux->item.nome, nome) == 0)
{
// cout << "Nome: " << aux->item.nome << endl;
cout << "ID: " << aux->item.id << endl;
cout << "Nome: " << aux->item.nome << endl;
cout << "Telefone: " << aux->item.telefone << endl;
cout << "Celular: " << aux->item.celular << endl;
cout << "Email: " << aux->item.email << endl;
cout << "Aniversario: " << aux->item.aniversario.dia << "/" << aux->item.aniversario.mes << endl
<< endl;
break;
}
aux = aux->prox;
}
}

void ImprimeItemPorId(TipoLista *lista, int id)
{
Apontador aux;
aux = lista->primeiro->prox;
while (aux != NULL)
{
if (aux->item.id == id)
{
cout << "Nome: " << aux->item.nome << endl;
cout << "Telefone: " << aux->item.telefone << endl;
cout << "Celular: " << aux->item.celular << endl;
cout << "Email: " << aux->item.email << endl;
cout << "Aniversario: " << aux->item.aniversario.dia << "/" << aux->item.aniversario.mes << endl
<< endl;
break;
}
aux = aux->prox;
}
}

void RemoveListaPrimeiro(TipoLista *lista)
{
if (VerificaListaVazia(lista))
{
return;
}
Apontador aux;
aux = lista->primeiro->prox;
lista->primeiro->prox = aux->prox;
delete aux;
lista->tamanho--;
}

void RemoveListaUltimo(TipoLista *lista)
{
if (VerificaListaVazia(lista))
{
return;
}
Apontador aux, atual;
atual = lista->primeiro->prox;
aux = lista->ultimo;
while (atual->prox != lista->ultimo)
{
atual = atual->prox;
}
atual->prox = NULL;
lista->ultimo = atual;
delete aux;
lista->tamanho--;
}

void RemoveItemPorId(TipoLista *lista, int id)
{
if (VerificaListaVazia(lista))
{
return;
}

Apontador aux, anterior, x;

aux = lista->primeiro->prox;

x = lista->primeiro;

while (x != NULL)
{
if (x->prox->item.id == id)
{
anterior = x;
break;
}
x = x->prox;
}
aux = anterior->prox;
anterior->prox = aux->prox;
delete aux;
lista->tamanho--;
}
55 changes: 55 additions & 0 deletions Lista Encadeada/exercicios/lista.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#ifndef LISTA_H
#define LISTA_H

typedef struct TipoData
{
int dia;
int mes;
} TipoData;

typedef struct TipoItem
{
unsigned int id;
char nome[40];
char telefone[15];
char celular[15];
char email[40];
TipoData aniversario;
} TipoItem;

typedef struct TipoElemento *Apontador;

typedef struct TipoElemento
{
TipoItem item;
struct TipoElemento *prox;
} TipoElemento;

typedef struct TipoLista
{
Apontador primeiro;
Apontador ultimo;
int tamanho = 0;
} TipoLista;

bool listaCriada = false;
int id = 1;

void CriaListaVazia(TipoLista *lista);
bool VerificaListaVazia(TipoLista *lista);
void InsereListaUltimo(TipoLista *lista, TipoItem *item);
void AtualizaUltimo(TipoLista *lista);
void ImprimeLista(TipoLista lista);
bool PesquisaItem(TipoLista *lista, char nome[]);
bool PesquisaItemPorId(TipoLista *lista, int id);
bool PesquisaItemPorEmail(TipoLista *lista, char email[]);
void ImprimeItem(TipoLista *lista, char nome[]);
void ImprimeItemPorId(TipoLista *lista, int id);
void RemoveListaPrimeiro(TipoLista *lista);
void RemoveListaUltimo(TipoLista *lista);
void RemoveItemPorId(TipoLista *lista, int id);
int TamanhoLista(TipoLista *lista);
int Atualiza(TipoLista *lista, TipoItem item, char nome[], int campo);
int AtualizaAniversario(TipoLista *lista, TipoItem item, int dia, int mes);

#endif
Loading

0 comments on commit 2ef2881

Please sign in to comment.