Skip to content

Instantly share code, notes, and snippets.

@marcos-bah
Created August 4, 2021 18:18
Show Gist options
  • Save marcos-bah/357718024a0ea9e3bfe5a973cfd01519 to your computer and use it in GitHub Desktop.
Save marcos-bah/357718024a0ea9e3bfe5a973cfd01519 to your computer and use it in GitHub Desktop.
Lista Encadeada - Ordenada
#include <iostream>
//template
template <class T>
class ListaOrdenada{
private:
class No{
private:
No* prox;
T dado;
public:
No(T dado){
this->dado = dado;
prox = NULL;
}
~No() {}
No* proximo(){
return prox;
}
void proximo(No* novo){
prox = novo;
}
T getDado(){
return dado;
}
void setDado(T dd){
this->dado = dd;
}
};
No* inicio;
No* fim;
public:
ListaOrdenada(){
inicio = NULL;
fim = NULL;
}
void inserir(T dado){
No* novo = new No(dado);
if(inicio == NULL){
inicio = novo;
fim = novo;
}else{
fim->proximo(novo);
fim = novo;
}
}
void imprimir(){
No* aux = inicio;
while(aux != NULL){
std::cout << aux->getDado() << std::endl;
aux = aux->proximo();
}
}
void remover(T dado){
No* aux = inicio;
No* ant = NULL;
while(aux != NULL){
if(aux->getDado() == dado){
if(ant == NULL){
inicio = aux->proximo();
}else{
ant->proximo(aux->proximo());
}
delete aux;
break;
}
ant = aux;
aux = aux->proximo();
}
}
bool buscar(T dado){
No* aux = inicio;
while(aux != NULL){
if(aux->getDado() == dado){
return true;
}
aux = aux->proximo();
}
return false;
}
void ordenar(){
//iniciando
T dd;
No* atual = inicio;
while(atual != NULL){
No* prox = atual->proximo();
while(prox!=NULL){
if(atual->getDado() > prox->getDado()){
dd = atual->getDado();
atual->setDado(prox->getDado());
prox->setDado(dd);
}
prox = prox->proximo();
}
//serve para ir ao próximo valor
atual = atual->proximo();
}
}
};
int main(int argc, char const *argv[])
{
ListaOrdenada<int> lista;
lista.inserir(1);
lista.inserir(0);
lista.inserir(9);
lista.inserir(2);
lista.inserir(7);
lista.inserir(24);
std::cout << "Sem Ordenar:\n";
lista.imprimir();
std::cout << "Com Ordenacao:\n";
lista.ordenar();
lista.imprimir();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment