Skip to content

Instantly share code, notes, and snippets.

@werbet
Created December 2, 2015 18:59
Show Gist options
  • Save werbet/4085b3f8b56802d6a5ae to your computer and use it in GitHub Desktop.
Save werbet/4085b3f8b56802d6a5ae to your computer and use it in GitHub Desktop.
Implementação da classe Lista em C++
//
// main.cpp
// Lista
//
// Created by Eriko Werbet on 12/2/15.
// Copyright © 2015 Eriko Werbet. All rights reserved.
//
#include <stdio.h>
class No
{
private:
int valor;
No* proximo;
public:
No()
{
this->valor = -1;
this->proximo = NULL;
}
No(int valor)
{
this->valor = valor;
this->proximo = NULL;
}
void setValor(int valor)
{
this->valor = valor;
}
int getValor()
{
return this->valor;
}
void setProximo(No* proximo)
{
this->proximo = proximo;
}
No* getProximo()
{
return this->proximo;
}
void imprimir()
{
printf("%d, ", this->valor);
}
};
class Lista
{
private:
int tamanho;
No* primeiro;
No* ultimo;
public:
Lista()
{
this->tamanho = 0;
this->primeiro = NULL;
this->ultimo = NULL;
}
void inserirFim(int valor)
{
if (this->tamanho == 0)
{
this->primeiro = new No(valor);
this->ultimo = primeiro;
this->tamanho++;
}
else
{
this->ultimo->setProximo(new No(valor));
this->ultimo = this->ultimo->getProximo();
this->tamanho++;
}
}
void inserirComeco(int valor)
{
if (this->tamanho == 0)
{
this->primeiro = new No(valor);
this->ultimo = primeiro;
this->tamanho++;
}
else
{
No* aux = primeiro;
primeiro = new No(valor);
primeiro->setProximo(aux);
this->tamanho++;
}
}
void remover(int valor)
{
No* atual = this->primeiro;
No* anterior = NULL;
while(atual != NULL)
{
if(anterior == NULL)
{
if(atual->getValor() == valor)
{
this->primeiro = atual->getProximo();
delete atual;
break;
}
}
else
{
if(atual->getValor() == valor)
{
anterior->setProximo(atual->getProximo());
delete atual;
atual = anterior->getProximo();
break;
}
}
anterior = atual;
atual = atual->getProximo();
}
}
void imprimir()
{
No* atual = this->primeiro;
while (atual != NULL)
{
atual->imprimir();
atual = atual->getProximo();
}
}
~Lista()
{
No* atual = this->primeiro;
while (atual != NULL)
{
No* aux = atual->getProximo();
delete atual;
atual = aux;
}
printf("Lista apagada com sucesso!\n");
}
};
int main(int argc, const char * argv[]) {
Lista* teste = new Lista();
teste->inserirFim(0);
teste->inserirFim(1);
teste->inserirFim(2);
teste->inserirFim(3);
teste->inserirFim(4);
teste->inserirComeco(-1);
teste->inserirComeco(-2);
teste->imprimir();
teste->remover(4);
teste->imprimir();
delete teste;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment