Buscar

Algoritmos fila,pilha,lista,arvore e arvore red black, todos do livro do Cormen orientado a objeto

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

5bb1a87c-d636-4706-a113-0223d4e0e4bb
Algoritmos Prontos/ArvoreTeste/ArvoreTeste.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-11-18T20:50:27
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = ArvoreTeste
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
 arvore.cpp
HEADERS += \
 arvore.h
Algoritmos Prontos/ArvoreTeste/ArvoreTeste.pro.user
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {528da7ad-a39b-4f4c-ab64-a2a815ce0b01}
 0
 0
 0
 
 /home/rick/build-ArvoreTeste-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/rick/build-ArvoreTeste-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 ArvoreTeste
 ArvoreTeste2
 Qt4ProjectManager.Qt4RunConfiguration:/home/rick/Documentos/ED - exemplos/ArvoreTeste/ArvoreTeste.pro
 
 ArvoreTeste.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {966055ba-b836-4a12-aafd-ade71c6837b1}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15
 
Algoritmos Prontos/fila/main.cpp
#include <iostream>
#include "fila.h"
#include "fpessoa.h"
using namespace std;
int main ()
{
 fila *fl = new fila();
 fila *novafila;
 fpessoa *p;
 string nome;
 int escolha;
 do{
 cout<<"\n Menu" <<endl;
 cout<<" Digite 1 para inserir nomes"<<endl;
 cout<<" Digite 2 para remover nomes"<<endl;
 cout<<" Digite 3 para exibir a fila"<<endl;
 cout<<" Digite 4 para Sair "<<endl;
 cin>>escolha;
 cin.ignore();
 switch (escolha) {
 case 1:
 p = new fpessoa();
 cout<<"Digite nome "<<endl;
 getline(cin,nome);
 p->setnome(nome);
 fl->ENQUEUE(p);
 p = 0;
 cout<<"Armazenado"<<endl;
 break;
 case 2:
 cout<<"Retirado ultimo elemento"<<endl;
 fl->DEQUEUE();
 break;
 case 3:
 novafila = new fila();
 while(fl->getinicio()!=0)
 {
 p = new fpessoa();
 p = fl->DEQUEUE();
 cout<<" - "<<p->getnome();
 novafila->ENQUEUE(p);
 p = 0;
 }
 delete fl;
 fl = novafila;
 novafila=0;
 break;
 case 4:
 cout<<"\nFim de Programa"<<endl;
 return 0;
 break;
 default:
 cout<<"Opção inválida"<<endl;
 break;
 }
 }while (escolha != 4);
 delete fl;
 delete p;
 fl = 0;
 p = 0;
 return 0;
}
Algoritmos Prontos/listaNomes/listaNomes.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-08-28T20:00:36
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = listaNomes
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
 pessoa.cpp \
 lista.cpp
HEADERS += \
 pessoa.h \
 lista.h
Algoritmos Prontos/pilha/pilha.cpp
#include "pilha.h"
pilha::pilha()
{
 topo = 0;
}
pilha::~pilha()
{
 delete topo;
}
void pilha::setTopo(ppessoa *novo)
{
 topo = novo;
}
ppessoa* pilha::getTopo()
{
 return topo;
}
void pilha::PUSH(ppessoa *novo)
{
 if(topo==0)
 {
 topo = novo;
 }
 else
 {
 novo->setpilha(getTopo());
 topo->setantepilha(novo);
 topo = novo;
 }
}
ppessoa* pilha::POP()
{
 if(topo==0)
 {
 return 0;
 }
 ppessoa *aux=topo;
 if(topo->getpilha()==0)
 {
 setTopo(0);
 }
 else
 {
 topo = topo->getpilha();
 topo->setantepilha(0);
 aux->setpilha(0);
 }
 return aux;
}
Algoritmos Prontos/fila/fila.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-09-09T09:32:15
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = fila
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
 fila.cpp \
 fpessoa.cpp
HEADERS += \
 fila.h \
 fpessoa.h
Algoritmos Prontos/listaNomes/main.cpp
#include <iostream>
#include <string>
#include "pessoa.h"
#include "lista.h"
using namespace std;
int main ()
{
 lista *list = new lista();
 pessoa *p;
 string nome;
 int escolha;
 do{
 cout<<" ***menu*** "<<endl;
 cout<<"1 - Digite para adicionar nomes ao inicio da lista"<<endl;
 cout<<"2 - Digite para adicionar nomes ao fim da lista"<<endl;
 cout<<"3 - Digite para remover nomes do inicio da lista"<<endl;
 cout<<"4 - Digite para remover nomes do fim da lista"<<endl;
 cout<<"5 - Digite para remover qualquer nome"<<endl;
 cout<<"6 - Digite para exibir lista"<<endl;
 cout<<"7 - Digite para sair do programa"<<endl;
 cin>>escolha;
 cin.ignore();
 switch (escolha)
{
 case 1:
 //adicionando no inicio;
 cout<<"Digite o nome para adicionar no incio lista"<<endl;
 getline(cin,nome);
 p = new pessoa();
 p->setnome(nome);
 list->inserirI(p); //ainda em construção;
 p=0;
 cout<<"Armazenado no inicio"<<endl;
 break;
 case 2:
 //adicionando no final;
 cout<<"Digite nome para adicionar no fim da lista"<<endl;
 getline(cin,nome);
 p = new pessoa();
 p->setnome(nome);
 list->inserir(p);
 p=0;
 cout<<"Armazenado no fim"<<endl;
 break;
 case 3:
 // retiro do inicio;
 list->retirar();
 cout<<"Removido do inicio"<<endl;
 break;
 case 4:
 //retiro do final;
 list->retirarF();
 cout<<"Removido do final"<<endl;
 break;
 case 5:
 // ainda em construção;
 cout<<"Digite nome para deletar da lista"<<endl;
 getline(cin,nome);
 list->excluirE(nome);
 break;
 case 6:
 //exibição simples;
 list->exibir();
 break;
 case 7:
 delete p;
 delete list;
 break;
 default:
 cout<<"\nOpção inválida! Digite novamente"<<endl;
 break;
 }
 }while (escolha != 7);
 cout<<"Fim de Programa"<<endl;
 delete p;
 delete list;
 p=0;
 list=0;
 return 0;
}
Algoritmos Prontos/fila/fila.pro.user.9349f66
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {d879a297-2788-42b3-8463-efd921e30ced}
 0
 0
 0
 
 /home/ricardo/build-fila-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/ricardo/build-fila-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 fila
 fila2
 Qt4ProjectManager.Qt4RunConfiguration:/home/ricardo/Área de Trabalho/Estruturas de Dados I - cmp 1054/N1/fila/fila.pro
 
 fila.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {9349f66a-bdd4-47b3-bdfa-420ee3f2fae7}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15
 
Algoritmos Prontos/ArvoreTeste/arvore.h
/* Disciplina : Estrutura de Dados I - Árvore Binária de Pesquisa;
 * Autor : Ricardo dos Santos;
 * Data: 19/11/2015;
*/
#ifndef ARVORE_H
#define ARVORE_H
#include <cstdlib>
#include <iostream>
class Arvore
{
public:
 Arvore() { pai=filhoEsquerdo=filhoDireito=raiz=NULL; chave=0;}
 ~Arvore();
 void setPai(Arvore* pai) { this->pai = pai;}
 void setFilhoEsquerdo(Arvore* filhoEsquerdo) { this->filhoEsquerdo = filhoEsquerdo;}
 void setFilhoDireito(Arvore* filhoDireito) { this->filhoDireito = filhoDireito;}
 void setRaiz(Arvore* raiz) { this->raiz = raiz; }
 Arvore* getPai() {return this->pai;}
 Arvore* getFilhoEsquerdo() {return this->filhoEsquerdo;}
 Arvore* getFilhoDireito() {return this->filhoDireito;}
 Arvore* getRaiz() {return this->raiz;}
 void setChave(int numero) {chave = numero;}
 int getChave() {return chave;}
 void inserir(Arvore*);
 void emOrdem(Arvore*);
 void preOrdem(Arvore*);
 void posOrdem(Arvore*);
 Arvore* minimo(Arvore* novo);
 Arvore* maximo(Arvore* novo);
 Arvore* buscar(Arvore*,int);
 Arvore* buscaIterativa(Arvore*,int);
 Arvore* sucessor(Arvore*);
 Arvore* predecessor(Arvore*);
 Arvore *remover(Arvore*);
 void transplante(Arvore*,Arvore*);
private:
 Arvore *pai;
 Arvore *filhoEsquerdo;
 Arvore *filhoDireito;
 Arvore *raiz;
 int chave;
};
#endif // ARVORE_H
Algoritmos Prontos/listaNomes/pessoa.h
#ifndef PESSOA_H
#define PESSOA_H
#include <iostream>
#include <string>
using namespace std;
class pessoa
{
public:
 pessoa();
 ~pessoa();
 void setnome(string);
 void setproximo(pessoa *n);
 string getnome();
 pessoa *getproximo();
private:
 string nome;
 pessoa *proximo;
};
#endif // PESSOA_H
Algoritmos Prontos/ArvoreRedBlack2/arvore.cpp
/* Disciplina : Estrutura de Dados I - Árvore Binária Red Black;
 * Autor : Ricardo dos Santos;
 * Data: 02/12/2015;
*/
#include "arvore.h"
arvore* arvore::Nil = new arvore();
arvore::arvore()
{
 pai=esquerdo=direito=raiz=arvore::Nil;
 cor = " ";
 chave = 0;
}
arvore::~arvore()
{
 if(pai) delete pai;
 if(esquerdo) delete esquerdo;
 if(direito) delete direito;
 if(raiz) delete raiz;
 if(Nil) delete Nil;
}
// ------------- inserir;
void arvore::inserir(arvore *z)
{
 arvore *y = arvore::Nil;
 arvore *x = this->raiz;
 while(x!=arvore::Nil)
 {
 y = x;
 if(z->getChave() < x->getChave())
 x = x->esquerdo;
 else
 x = x->direito;
 }
 z->pai = y;
 if(y==arvore::Nil)
 {
// this->pai = arvore::Nil;
 this->raiz = z;
 }
 else if(z->getChave() < y->getChave())
 y->esquerdo = z;
 else
 y->direito = z;
 z->esquerdo = arvore::Nil;
 z->direito = arvore::Nil;
 z->cor = "RED";
 this->inserirFixa(z);
} // fim do inserir;
void arvore::inserirFixa(arvore *z) // inserir Fixa
{
 arvore *y;
 while(z->pai->cor=="RED")
 {
 if(z->pai == z->pai->pai->esquerdo)
 {
 y = z->pai->pai->direito;
 if(y->cor == "RED")
 {
 z->pai->cor = "BLACK";
 y->cor = "BLACK";
 z->pai->pai->cor = "RED";
 z = z->pai->pai;
 }
 else if(z==z->pai->direito)
 {
 z = z->pai;
 rotacaoEsquerda(z);
 }
 else
 {
 z->pai->cor = "BLACK";
 z->pai->pai->cor = "RED";
 rotacaoDireita(z->pai->pai);
 }
 }
 else
 {
 y = z->pai->pai->esquerdo;
 if(y->cor == "RED")
 {
 z->pai->cor = "BLACK";
 y->cor = "BLACK";
 z->pai->pai->cor = "RED";
 z = z->pai->pai;
 }
 else if(z==z->pai->esquerdo)
 {
 z = z->pai;
 rotacaoDireita(z);
 }
 else
 {
 z->pai->cor = "BLACK";
 z->pai->pai->cor = "RED";
 rotacaoEsquerda(z->pai->pai);
 }
 }
 }
 raiz->cor="BLACK";
} // fim do inserir fixa;
void arvore::rotacaoEsquerda(arvore *x) //rotação esquerda inicio;
{
 arvore *y = x->direito;
 x->direito = y->esquerdo;
 if(y->esquerdo != arvore::Nil)
 y->esquerdo->pai = x;
 y->pai = x->pai;
 if(x->pai==arvore::Nil) // livro do Cormem;
 this->raiz = y;
 else if(x==x->pai->esquerdo)
 x->pai->esquerdo = y;
 else
 x->pai->direito = y;
 y->esquerdo = x;
 x->pai = y;
} // rotação esquerda fim;
void arvore::rotacaoDireita(arvore *y) // rotação direita inicio;
{
 arvore *x = y->esquerdo;
 y->esquerdo = x->direito;
 if(x->direito != arvore::Nil)
 x->direito->pai = y;
 x->pai = y->pai;
 if(y->pai==arvore::Nil)
 this->raiz = x; // livro do cormem
 else if(y==y->pai->direito)
 y->pai->direito = x;
 else
 y->pai->esquerdo = x;
 x->direito = y;
 y->pai = x;
} // rotação direita fim;
void arvore::emOrdem(arvore *z)
{
 if(z!=arvore::Nil)
 {
 emOrdem(z->esquerdo); // listar em ordem;
 cout<<" - "<<z->getChave()<<"("<<z->getCor()<<")";
 emOrdem(z->direito);
 }
}
void arvore::preOrdem(arvore *z)
{
 if(z!=arvore::Nil)
 {
 cout<<" - "<<z->getChave()<<"("<<z->getCor()<<")";
 preOrdem(z->esquerdo); // listar pre ordem;
 preOrdem(z->direito);
 }
}
void arvore::posOrdem(arvore *z)
{
 if(z!=arvore::Nil)
 { posOrdem(z->esquerdo);
 posOrdem(z->direito); //listar por ordem;
 cout<<" - "<<z->getChave()<<"("<<z->getCor()<<")";
 }
}
arvore* arvore::minimo(arvore *z) // inicio do minimo;
{
 while(z->esquerdo != arvore::Nil)
 z = z->esquerdo;
 return z;
}
arvore* arvore::maximo(arvore *z) // inicio do maximo;
{
 while(z->direito != arvore::Nil)
 z = z->direito;
 return z;
}
arvore* arvore::buscar(arvore *z, int num) // inicio do buscar;
{
 if(z==arvore::Nil || num == z->getChave())
 return z;
 if(num < z->getChave())
 buscar(z->esquerdo,num);
 else
 buscar(z->direito,num);
}
arvore* arvore::sucessor(arvore *x) // inicio do sucessor;
{
 arvore *y = arvore::Nil;
 if(x->direito!= arvore::Nil)
 return minimo(x->direito);
 y = x->pai;
 while(y!=arvore::Nil && x==y->direito)
 {
 x = y;
 y = y->pai;
 }
 return y;
}
arvore* arvore::predecessor(arvore *x) // inicio do predecessor;
{
 arvore *y = arvore::Nil;
 if(x->esquerdo!= arvore::Nil)
 return maximo(x->esquerdo);
 y = x->pai;
 while(y!=arvore::Nil && x==y->direito)
 {
 x = y;
 y = y->pai;
 }
 return y;
}
void arvore::transplante(arvore *u, arvore *v) // inicio do transplante;
{
 if(u->pai == arvore::Nil)
 this->raiz = v;
 else if(u == u->pai->esquerdo)
 u->pai->esquerdo = v;
 else
 u->pai->direito = v;
 v->pai = u->pai;
}
arvore* arvore::remover(arvore *z) // inicio do remover comum;
{
 arvore *x;
 arvore *y = z;
 string yCorOrg = y->cor;
 //y->cor = y->cor;
 if(z->esquerdo==arvore::Nil)
 {
 x = z->direito;
 transplante(z,z->direito);
 }
 else if(z->direito==arvore::Nil)
 {
 x = z->esquerdo;
 transplante(z,z->esquerdo);
 }
 else
 {
 y = minimo(z->direito);
 yCorOrg = y->cor;
 x = y->direito;
 if(x->pai == z)
 x->pai = y;
 else
 {
 transplante(y,y->direito);
 y->direito = z->direito;
 y->direito->pai = y;
 }
 transplante(z,y);
 y->esquerdo = z->esquerdo;
 y->esquerdo->pai = y;
 y->cor = z->cor;
 }
 if(yCorOrg=="BLACK")
 this->removerFixa(x);
} // fim do remover comum;
arvore* arvore::removerFixa(arvore *x) // inicio do remover fixa;
{
 arvore *w;
 while(x != this->raiz && x->cor=="BLACK") // abertura do while;
 {
 if(x==x->pai->esquerdo) // if principal;
 {
 w = x->pai->direito;
 if(w->cor=="RED")
 {
 w->cor = "BLACK";
 x->pai->cor = "RED";
 rotacaoEsquerda(x->pai);
 w = x->pai->direito;
 }
 if(w->esquerdo->cor=="BLACK" && w->direito->cor=="BLACK")
 {
 w->cor = "RED";
 x = x->pai;
 }
 else
 {
 if(w->direito->cor=="BLACK")
 {
 w->esquerdo->cor = "BLACK";
 w->cor = "RED";
 rotacaoDireita(w);
 w = x->pai->direito;
 }
 else
 {
 w->cor = x->pai->cor;
 x->pai->cor = "BLACK";
 w->direito->cor = "BLACK";
 rotacaoEsquerda(x->pai);
 x = this->raiz;
 }
 }
 } // fim do if principal;
 else // else principal;
 {
 w = x->pai->esquerdo;
 if(w->cor=="RED")
 {
 w->cor = "BLACK";
 x->pai->cor = "RED";
 rotacaoDireita(x->pai);
 w = x->pai->esquerdo;
 }
 if(w->direito->cor=="BLACK" && w->esquerdo->cor=="BLACK")
 {
 w->cor = "RED";
 x = x->pai;
 }
 else
 {
 if (w->esquerdo->cor=="BLACK")
 {
 w->direito->cor = "BLACK";
 w->cor = "RED";
 rotacaoEsquerda(w);
w = x->pai->esquerdo;
 }
 else
 {
 w->cor = x->pai->cor;
 x->pai->cor = "BLACK";
 w->esquerdo->cor = "BLACK";
 rotacaoDireita(x->pai);
 x = this->raiz;
 }
 }
 } // fim do else principal;
 } // encerramento do while;
 x->cor = "BLACK";
} // fim do remover fixa;
Algoritmos Prontos/pilha/main.cpp
#include <iostream>
#include <string>
#include "pilha.h"
#include "ppessoa.h"
using namespace std;
int main ()
{
 ppessoa *p;
 pilha *pi = new pilha();
 pilha *novaPilha;
 string nome;
 int escolha;
 do{
 cout<<" Menu - teste da pilha"<<endl;
 cout<<" Digite 1 para Inserir elementos"<<endl;
 cout<<" Digite 2 para Remover elementos"<<endl;
 cout<<" Digite 3 para Exibir a pilha"<<endl;
 cout<<" Digite 4 para Sair do progrma"<<endl;
 cin>>escolha;
 cin.ignore();
 switch (escolha) {
 case 1:
 p = new ppessoa();
 cout<<"Digite o nome"<<endl;
 getline(cin,nome);
 p->setnome(nome);
 pi->PUSH(p);
 p=0;
 break;
 case 2:
 cout<<"Removido"<<endl;
 pi->POP();
 break;
 case 3:
 novaPilha = new pilha();
 while(pi->getTopo()!=0)
 {
 p = new ppessoa();
 p = pi->POP();
 cout<<" - "<<p->getnome()<<endl;
 novaPilha->PUSH(p);
 }
 while(novaPilha->getTopo()!=0)
 {
 pi->PUSH(novaPilha->POP());
 }
 novaPilha = 0;
 delete novaPilha;
 p = 0;
 break;
 case 4:
 cout<<" Fim de Programa"<<endl;
 delete p;
 delete pi;
 return 0;
 break;
 default:
 cout<<"Opção inválida"<<endl;
 break;
 }
 }while (escolha != 4);
 return 0;
}
Algoritmos Prontos/fila/fila.cpp
#include "fila.h"
using namespace std;
fila::fila()
{
 inicio = 0;
 final = 0;
}
fila::~fila()
{
 delete inicio;
 delete final;
}
void fila::setinicio(fpessoa *novo)
{
 inicio = novo;
}
fpessoa* fila::getinicio()
{
 return inicio;
}
void fila::setfinal(fpessoa *novo)
{
 final = novo;
}
fpessoa* fila::getfinal()
{
 return final;
}
void fila::ENQUEUE(fpessoa *novo) //insere no inicio;
{
 if(inicio==0 && final==0)
 {
 inicio = novo;
 final = novo;
 }
 else
 {
 final->setproximo(novo);
 novo->setanterior(final);
 final = novo;
 }
}
fpessoa* fila::DEQUEUE() //retira do final;
{
 if(inicio==0 && final==0)
 {
 return 0;
 }
 fpessoa *aux=inicio;
 if(inicio->getproximo()==0)
 {
 inicio = 0;
 final = 0;
 }
 else
 {
 inicio = inicio->getproximo();
 inicio->setanterior(0);
 aux->setproximo(0);
 }
 return aux;
}
Algoritmos Prontos/listaNomes/listaNomes.pro.user.9349f66
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {d879a297-2788-42b3-8463-efd921e30ced}
 0
 0
 0
 
 /home/ricardo/build-listaNomes-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/ricardo/build-listaNomes-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 listaNomes
 listaNomes2
 Qt4ProjectManager.Qt4RunConfiguration:/home/ricardo/Área de Trabalho/Estruturas de Dados I - cmp 1054/N1/listaNomes/listaNomes.pro
 
 listaNomes.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {9349f66a-bdd4-47b3-bdfa-420ee3f2fae7}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15
 
Algoritmos Prontos/ArvoreRedBlack2/ArvoreRedBlack2.pro.user
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {528da7ad-a39b-4f4c-ab64-a2a815ce0b01}
 0
 0
 0
 
 /home/rick/build-ArvoreRedBlack2-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
-w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/rick/build-ArvoreRedBlack2-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 ArvoreRedBlack2
 
 Qt4ProjectManager.Qt4RunConfiguration:/home/rick/ArvoreRedBlack2/ArvoreRedBlack2.pro
 
 ArvoreRedBlack2.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {966055ba-b836-4a12-aafd-ade71c6837b1}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15
 
Algoritmos Prontos/fila/fpessoa.h
#ifndef FPESSOA_H
#define FPESSOA_H
#include <iostream>
#include <string>
using namespace std;
class fpessoa
{
public:
 fpessoa();
 ~fpessoa();
 void setnome(string);
 void setproximo(fpessoa *);
 void setanterior(fpessoa *);
 string getnome();
 fpessoa *getproximo();
 fpessoa *getanterior();
private:
 string nome;
 fpessoa *proximo;
 fpessoa *anterior;
};
#endif // FPESSOA_H
Algoritmos Prontos/fila/fpessoa.cpp
#include "fpessoa.h"
fpessoa::fpessoa()
{
 proximo = 0;
 anterior = 0;
}
fpessoa::~fpessoa()
{
 delete proximo;
 delete anterior;
}
void fpessoa::setnome(string novo)
{
 nome = novo;
}
void fpessoa::setproximo(fpessoa *novo)
{
 proximo = novo;
}
void fpessoa::setanterior(fpessoa *novo)
{
 anterior = novo;
}
string fpessoa::getnome()
{
 return nome;
}
fpessoa* fpessoa::getproximo()
{
 return proximo;
}
fpessoa* fpessoa::getanterior()
{
 return anterior;
}
Algoritmos Prontos/listaNomes/pessoa.cpp
#include "pessoa.h"
using namespace std;
pessoa::pessoa()
{
 proximo = 0;
}
 pessoa::~pessoa()
{
 delete proximo;
}
void pessoa::setnome(string nm)
{
 nome = nm;
}
void pessoa::setproximo(pessoa *n)
{
 proximo = n;
}
string pessoa::getnome()
{
 return nome;
}
pessoa* pessoa::getproximo()
{
 return proximo;
}
Algoritmos Prontos/ArvoreRedBlack2/main.cpp
/* Disciplina : Estrutura de Dados I - Árvore Binária Red Black;
 * Autor : Ricardo dos Santos;
 * Data: 02/12/2015;
*/
#include <iostream>
#include "arvore.h"
using namespace std;
int main ()
{
 arvore *objArvore = new arvore;
 arvore *novo;
 int numero;
 int escolha;
 do
 {
 cout<<"MENU - Arvore Red Black"<<endl;
 cout<<"1 - Para Inserir"<<endl;
 cout<<"2 - Para Exibir"<<endl;
 cout<<"3 - Para Remover"<<endl;
 cout<<"4 - Para Buscar"<<endl;
 cout<<"5 - Sair"<<endl;
 cin>>escolha;
 switch (escolha) {
 case 1:
 novo = new arvore;
 cout<<"Digite valor "<<endl;
 cin>>numero;
 novo->setChave(numero);
 objArvore->inserir(novo);
 novo = 0;
 break;
 case 2:
 cout<<"Ordem"<<endl;
 objArvore->emOrdem(objArvore->getRaiz());
 cout<<endl;
 cout<<"Pre Ordem"<<endl;
 objArvore->preOrdem(objArvore->getRaiz());
 cout<<endl;
 cout<<"Pos Ordem"<<endl;
 objArvore->posOrdem(objArvore->getRaiz());
 cout<<endl;
 break;
 case 3:
 cout<<"Digite valor para remover"<<endl;
 cin>>numero;
 novo = objArvore->buscar(objArvore->getRaiz(),numero);
 if(novo!=arvore::Nil)
 objArvore->remover(novo);
 else
 cout<<"elemento não encontrado"<<endl;
 break;
 case 4:
 cout<<"Digite elemento á ser buscado"<<endl;
 cin>>numero;
 novo = objArvore->buscar(objArvore->getRaiz(),numero);
 if(novo!=arvore::Nil)
 cout<<"< "<<novo->getChave()<<" >"<<endl;
 else
 cout<<"elemento não encontrado"<<endl;
 break;
 case 5:
 cout<<" Fim de programa"<<endl;
 if(objArvore) delete objArvore;
 if(novo) delete novo; 
 objArvore = 0;
 novo = 0;
 break;
 default:
 cout<<"Numero inválido"<<endl;
 break;
 }
 }while(escolha!=5);
 return 0;
}
Algoritmos Prontos/pilha/pilha.h
#ifndef PILHA_H
#define PILHA_H
#include "ppessoa.h"
#include <string>
using namespace std;
class pilha
{
public:
 pilha();
 ~pilha();
 void setTopo(ppessoa *);
 ppessoa* getTopo();
 void PUSH(ppessoa*);
 ppessoa* POP();
private:
 ppessoa *topo;
};
#endif // PILHA_H
Algoritmos Prontos/pilha/ppessoa.cpp
#include "ppessoa.h"
ppessoa::ppessoa()
{
 pilha = 0;
 antePilha = 0;
}
ppessoa::~ppessoa()
{
 delete pilha;
 delete antePilha;
}
void ppessoa::setnome(string novo)
{
 nome = novo;
}
string ppessoa::getnome()
{
 return nome;
}
void ppessoa::setpilha(ppessoa *novo)
{
 pilha = novo;
}
ppessoa* ppessoa::getpilha()
{
 return pilha;
}
void ppessoa::setantepilha(ppessoa *novo)
{
 antePilha = novo;
}
ppessoa* ppessoa::getantepilha()
{
 return antePilha;
}
Algoritmos Prontos/pilha/pilha.pro.user
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {528da7ad-a39b-4f4c-ab64-a2a815ce0b01}
 0
 0
 0
 
 /home/rick/Documentos/ED - exemplos/Algoritmos/build-pilha-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/rick/Documentos/ED - exemplos/Algoritmos/build-pilha-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 pilha
 
 Qt4ProjectManager.Qt4RunConfiguration:/home/rick/Documentos/ED - exemplos/Algoritmos/pilha/pilha.pro
 
 pilha.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {966055ba-b836-4a12-aafd-ade71c6837b1}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15
 
Algoritmos Prontos/fila/fila.h
#ifndef FILA_H
#define FILA_H
#include "fpessoa.h"
#include <string>
using namespace std;
class fila
{
public:
 fila();
 ~fila();
 void setinicio(fpessoa *);
 fpessoa *getinicio();
 void setfinal(fpessoa *);
 fpessoa *getfinal();
 void ENQUEUE(fpessoa *);
 fpessoa* DEQUEUE();
private:
 fpessoa *inicio;
 fpessoa *final;
};
#endif // FILA_H
Algoritmos Prontos/pilha/pilha.pro.user.9349f66
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {d879a297-2788-42b3-8463-efd921e30ced}
 0
 0
 0
 
 /home/ricardo/build-pilha-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/ricardo/build-pilha-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 pilha
 pilha2
 Qt4ProjectManager.Qt4RunConfiguration:/home/ricardo/Área de Trabalho/Estruturas de Dados I - cmp 1054/N1/pilha/pilha.pro
 
 pilha.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {9349f66a-bdd4-47b3-bdfa-420ee3f2fae7}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15
 
Algoritmos Prontos/listaNomes/lista.h
#ifndef LISTA_H
#define LISTA_H
#include "pessoa.h"
class lista
{
public:
 lista();
 ~lista();
 void setprimeiro(pessoa *);
 pessoa* getprimeiro();
 void inserir(pessoa *);
 void inserirI(pessoa *);
 pessoa *retirar();
 pessoa *retirarF();
 pessoa excluirE(string);
 void exibir();
private:
 pessoa *primeiro;
 pessoa *ultimo;
};
#endif // LISTA_H
Algoritmos Prontos/pilha/ppessoa.h
#ifndef PPESSOA_H
#define PPESSOA_H
#include <iostream>
using namespace std;
class ppessoa
{
public:
 ppessoa();
 ~ppessoa();
 void setnome(string);
 string getnome();
 void setpilha(ppessoa *);
 ppessoa* getpilha();
 void setantepilha(ppessoa *);
 ppessoa* getantepilha();
 private:
 string nome;
 ppessoa *pilha;
 ppessoa *antePilha;
};
#endif // PPESSOA_H
Algoritmos Prontos/ArvoreTeste/arvore.cpp
/* Disciplina : Estrutura de Dados I - Árvore Binária de Pesquisa;
 * Autor : Ricardo dos Santos;
 * Data: 19/11/2015;
*/
#include "arvore.h"
Arvore::~Arvore()
{
 if(pai) delete pai;
 if(filhoDireito) delete filhoDireito;
 if(filhoEsquerdo) delete filhoEsquerdo;
 if(raiz) delete raiz;
}
void Arvore::inserir(Arvore* novo) // inicio do inserir;
{
 Arvore *y=NULL;
 Arvore *x = raiz;
 while(x!=NULL)
 {
 y = x;
 if(novo->chave < x->chave)
 x = x->filhoEsquerdo;
 else
 x = x->filhoDireito;
 }
 novo->setPai(y);
 if(y==NULL)
 {
 setRaiz(novo);
 }
 else if(novo->chave < y->chave)
 y->filhoEsquerdo = novo;
 else
 y->filhoDireito = novo;
} // fim do inserir;
void Arvore::emOrdem(Arvore* novo) // inicio
em ordem;
{
 if(novo != NULL)
 {
 emOrdem(novo->filhoEsquerdo);
 std::cout<<" - "<<novo->getChave();
 emOrdem(novo->filhoDireito);
 }
} // fim em ordem;
void Arvore::preOrdem(Arvore* novo) // inicio pre ordem;
{
 if(novo != NULL)
 {
 std::cout<<" - "<<novo->getChave();
 preOrdem(novo->getFilhoEsquerdo());
 preOrdem(novo->getFilhoDireito());
 }
} // fim do pre ordem;
void Arvore::posOrdem(Arvore* novo) // inicio pos ordem;
{
 if(novo != NULL)
 {
 posOrdem(novo->getFilhoEsquerdo());
 posOrdem(novo->getFilhoDireito());
 std::cout<<" - "<<novo->getChave();
 }
} // fim do pos ordem;
Arvore* Arvore::minimo(Arvore *novo) // inicio do minimo;
{
 while(novo->filhoEsquerdo!=NULL)
 novo = novo->filhoEsquerdo;
 return novo;
} // fim do minimo;
Arvore* Arvore::maximo(Arvore *novo) // inicio do maximo;
{
 while(novo->filhoDireito!=NULL)
 novo = novo->filhoDireito;
 return novo;
} // fim do maximo;
Arvore* Arvore::buscar(Arvore *x,int numero) // inicio do buscar simples;
{
 if(x==NULL || numero==x->chave)
 return x;
 if(numero < x->chave)
 buscar(x->getFilhoEsquerdo(),numero);
 else
 buscar(x->getFilhoDireito(),numero);
} // fim do buscar simples;
Arvore* Arvore::buscaIterativa(Arvore *x,int numero) // inicio do buscar interativa;
{
 while(x!=NULL && numero!=x->chave)
 {
 if(numero < x->chave )
 x = x->filhoEsquerdo;
 else
 x = x->filhoDireito;
 }
 return x;
} // fim do buscar interativo;
Arvore* Arvore::sucessor(Arvore* x) //inicio do sucessor;
{
 Arvore *y = NULL;
 if(x->filhoDireito!=NULL)
 return minimo(x->filhoDireito);
 y = x->pai;
 while(y!=NULL && x==y->filhoDireito)
 {
 x = y;
 y = y->pai;
 }
 return y;
} //fim do sucessor;
Arvore* Arvore::predecessor(Arvore* x) //inicio do predecessor;
{
 Arvore *y = NULL;
 if(x->filhoEsquerdo!=NULL)
 return maximo(x->filhoEsquerdo);
 y = x->pai;
 while(y!=NULL && x==y->filhoDireito)
 {
 x = y;
 y = y->pai;
 }
 return y;
} //fim do predecessor;
void Arvore::transplante(Arvore *u, Arvore *v) // inicio do transplante;
{
 Arvore* aux = u->pai;
 if(aux == NULL)
 setRaiz(v);
 else if(u==aux->filhoEsquerdo)
 aux->setFilhoEsquerdo(v);
 else
 aux->setFilhoDireito(v);
 if(v != NULL)
 v->setPai(u->getPai());
} // fim do transplante;
Arvore* Arvore::remover(Arvore* z) // inicio do remover;
{
 Arvore *y=NULL;
 if(z->filhoEsquerdo==NULL)
 transplante(z,z->getFilhoDireito());
 else if(z->filhoDireito==NULL)
 transplante(z,z->getFilhoEsquerdo());
 else
 {
 y = minimo(z->getFilhoDireito());
 if(y->getPai() != z)
 {
 transplante(y, y->getFilhoDireito());
 y->setFilhoDireito(z->getFilhoDireito());
 y->getFilhoDireito()->setPai(y);
 }
 transplante(z,y);
 y->setFilhoEsquerdo(z->getFilhoEsquerdo());
 y->getFilhoEsquerdo()->setPai(y);
 }
} // fim do remover;
Algoritmos Prontos/listaNomes/listaNomes.pro.user
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {528da7ad-a39b-4f4c-ab64-a2a815ce0b01}
 0
 0
 0
 
 /home/rick/Documentos/ED - exemplos/Algoritmos/build-listaNomes-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/rick/Documentos/ED - exemplos/Algoritmos/build-listaNomes-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 listaNomes
 
 Qt4ProjectManager.Qt4RunConfiguration:/home/rick/Documentos/ED - exemplos/Algoritmos/listaNomes/listaNomes.pro
 
 listaNomes.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {966055ba-b836-4a12-aafd-ade71c6837b1}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15
 
Algoritmos Prontos/ArvoreTeste/main.cpp
/*Disciplina : Estrutura de Dados I - Árvore Binária de Pesquisa;
 * Autor : Ricardo dos Santos;
 * Data: 19/11/2015;
*/
#include <iostream>
#include "arvore.h"
using namespace std;
int main ()
{
 Arvore *ObjetoArvore = new Arvore;
 Arvore *Novo;
 Arvore *aux;
 Arvore *aux1;
 int numero,opcao;
 do
 {
 cout<<"Menu - Arvore binária"<<endl;
 cout<<"1 - Digite para inserir "<<endl;
 cout<<"2 - Digite para exibir"<<endl;
 cout<<"3 - Digite para buscar elemento"<<endl;
 cout<<"4 - Digite para busca iterativa"<<endl;
 cout<<"5 - Digite para Sucessor e Antecessor"<<endl;
 cout<<"6 - Digite para Remover elemento"<<endl;
 cout<<"7 - Digite para Sair"<<endl;
 cin>>opcao;
 switch (opcao)
{
 case 1:
 cout<<"Digite numero "<<endl;
 cin>>numero;
 Novo = new Arvore;
 Novo->setChave(numero);
 ObjetoArvore->inserir(Novo);
 break;
 case 2:
 cout<<"em Ordem"<<endl;
 ObjetoArvore->emOrdem(ObjetoArvore->getRaiz());
 cout<<endl;
 cout<<"pre Ordem"<<endl;
 ObjetoArvore->preOrdem(ObjetoArvore->getRaiz());
 cout<<endl;
 cout<<"pos Ordem"<<endl;
 ObjetoArvore->posOrdem(ObjetoArvore->getRaiz());
 cout<<endl;
 break;
 case 3:
 cout<<"Digite elemento para buscar"<<endl;
 cin>>numero;
 if(!ObjetoArvore->buscar(ObjetoArvore->getRaiz(),numero))
 cout<<" Numero inválido"<<endl;
 else
 {
 Novo = ObjetoArvore->buscar(ObjetoArvore->getRaiz(), numero);
 cout<<" - "<<Novo->getChave();
 cout<<endl;
 }
 break;
 case 4:
 cout<<"Digite elemento para busca"<<endl;
 cin>>numero;
 if(!ObjetoArvore->buscaIterativa(ObjetoArvore->getRaiz(),numero))
 cout<<" Numero inválido"<<endl;
 else
 {
 Novo = ObjetoArvore->buscaIterativa(ObjetoArvore->getRaiz(),numero);
 cout<<" - "<<Novo->getChave();
 cout<<endl;
 }
 break;
 case 5:
 cout<<"Digite elemento para buscar proximo e anterior"<<endl;
 cin>>numero;
 cout<<" Sucessor "<<endl;
 aux = ObjetoArvore->buscar(ObjetoArvore->getRaiz(),numero);
 cout<<" - "<<ObjetoArvore->sucessor(aux)->getChave();
 cout<<endl;
 cout<<" Predecessor"<<endl;
 cout<<" - "<<ObjetoArvore->predecessor(aux)->getChave();
 cout<<endl;
 break;
 case 6:
 cout<<"Digite um elemento para remover"<<endl;
 cin>>numero;
 aux1 = ObjetoArvore->buscar(ObjetoArvore->getRaiz(),numero);
 ObjetoArvore->remover(aux1);
 break;
 case 7:
 if(ObjetoArvore) delete ObjetoArvore;
 if(Novo) delete Novo;
 cout<<"Fim de programa"<<endl;
 return 0;
 break;
 default:
 cout<<"Digite novamente"<<endl;
 break;
 }
 }while(opcao != 7);
 cout<<"Fim de Execução"<<endl;
}
Algoritmos Prontos/ArvoreRedBlack2/arvore.h
/* Disciplina : Estrutura de Dados I - Árvore Binária Red Black;
 * Autor : Ricardo dos Santos;
 * Data: 02/12/2015;
*/
#ifndef ARVORE_H
#define ARVORE_H
#include <iostream>
#include <string>
using namespace std;
class arvore
{
public:
 arvore();
 ~arvore();
 static arvore* Nil;
 void setPai(arvore *pai) {this->pai = pai;}
 void setEsquerdo(arvore *esquerdo) {this->esquerdo = esquerdo;}
 void setDireito(arvore *direito) {this->direito = direito;}
 void setRaiz(arvore *raiz) {this->raiz = raiz;}
 void serCor(string cor) {this->cor = cor;}
 void setChave(int chave) {this->chave = chave;}
 arvore* getPai() {return this->pai;}
 arvore* getEsquerdo() {return this->esquerdo;}
 arvore* getDireito() {return this->direito;}
 arvore* getRaiz() {return this->raiz;}
 string getCor() {return this->cor;}
 int getChave() {return this->chave;}
 void inserir(arvore*); //ok
 void inserirFixa(arvore*); //ok
 void rotacaoEsquerda(arvore*); //ok
 void rotacaoDireita(arvore*); //ok
 void emOrdem(arvore*); //ok
 void preOrdem(arvore*); //ok
 void posOrdem(arvore*); //ok
 arvore* buscar(arvore*,int); //ok
 arvore* minimo(arvore*); //ok
 arvore* maximo(arvore*); //ok
 arvore* sucessor(arvore*); //ok
 arvore* predecessor(arvore*); //ok
 arvore* remover(arvore*); //ok
 arvore* removerFixa(arvore*); //ok
 void transplante(arvore*,arvore*); //ok
private:
 arvore *pai;
 arvore *esquerdo;
 arvore *direito;
 arvore *raiz;
 string cor;
 int chave;
};
#endif // ARVORE_H
Algoritmos Prontos/ArvoreRedBlack2/ArvoreRedBlack2.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-11-28T11:18:37
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = ArvoreRedBlack2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
 arvore.cpp
HEADERS += \
 arvore.h
Algoritmos Prontos/pilha/pilha.pro
#-------------------------------------------------
#
# Project created by QtCreator 2015-09-09T10:15:45
#
#-------------------------------------------------
QT += core
QT -= gui
TARGET = pilha
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
 pilha.cpp \
 ppessoa.cpp
HEADERS += \
 pilha.h \
 ppessoa.h
Algoritmos Prontos/listaNomes/lista.cpp
#include "lista.h"
// construtor;
lista::lista() { primeiro = 0; }
// destrutor;
lista::~lista() { delete primeiro; }
// setando primeiro;
void lista::setprimeiro(pessoa *n) { primeiro = n; }
// retornando o primeiro;
pessoa* lista::getprimeiro() { return primeiro; }
// insiro nome no fim da lista;
void lista::inserir(pessoa *novo)
{
 if(primeiro == 0)
 {
 primeiro = novo; //caso lista vazia, ja coloquo valor;
 }
 // caso não vazia, insiro no proximo espaço vazio;
 else
 {
 pessoa *pt = primeiro;
 for ( ; pt->getproximo()!=0; pt=pt->getproximo()); // faço busca de espaço vazio;
 pt->setproximo(novo); // coloquo novo valor;
 }
}
// insiro nome no inicio da lista;
void lista::inserirI(pessoa *novo)
{
 if(primeiro == 0)
 {
 primeiro = novo; //caso lista vazia, ja insiro valor;
 }
 else
 {
 novo->setproximo(getprimeiro()); //empurro a lista para frente;
 primeiro = novo; // insiro o valor;
 }
}
// retirando nomes do inicio da lista;
pessoa* lista::retirar()
{
 if(primeiro == 0)
 {
 return 0; //caso vazia, retorna nada;
 }
 // caso tenha valores, retiro do inicio;
 else
 {
 pessoa *p=primeiro;
 primeiro = primeiro->getproximo(); //aponto para a primeira posição;
 p->setproximo(0); // apago o nome;
 return p; // retorno espaço em branco;
 }
}
// retirar valores do final da lista;
pessoa* lista::retirarF()
{
 if(primeiro==0)
 {
 return 0; // caso vazio, retorno nada;
 }
 else
 {
 // caso apenas um nome, removo seu valor;
 if(getprimeiro()->getproximo()==0) //aponto para o próximo;
 {
 pessoa *q = getprimeiro();
 setprimeiro(0); // deleto o primeiro elemento;
 return q;
 }
 // caso tenha mais nomes, aponto para o proximo do penultimo;
 else
 {
 pessoa *p=getprimeiro();
 for( ;p->getproximo()->getproximo()!=0; p=p->getproximo()); //aqui busco a penultima posição;
 pessoa *q = p->getproximo(); //aqui guardo o nome para exibir;
 p->setproximo(0); // aqui removo o nome do ultimo;
 return q;
 }
 }
}
// retirando elemento
especifico, por nome;
pessoa lista::excluirE(string nm)
{
 if(primeiro==0) // lista vazia;
 {
 std::cout<<"lista vazia"<<endl;
 }
 else
 {
 pessoa *ptr=primeiro;
 if(getprimeiro()->getproximo()==0)//primeiro elemento;
 {
 if(nm == ptr->getnome())
 {
 cout<<"elemento <"<<nm<<"> removido"<<endl;
 setprimeiro(0);
 }
 else
 {
 cout<<"nome não consta na lista"<<endl;
 }
 }
 else // procurando na lista com mais nomes;
 {
 *ptr = *primeiro; // aponta pro primeiro;
 pessoa *pt; // auxiliar;
 while (ptr != 0 && ptr->getnome() != nm) // faço a busca;
 {
 pt = ptr; // pt fica como anterior recebendo proximo;
 ptr = ptr->getproximo(); // proximo recebe o proximo nome;
 }
 if (ptr == 0)
 {
 cout<<"nome não encontrado"<<endl; //falta corrigir;
 return *ptr;
 } // caso não encontre;
 if(ptr == primeiro)
 {
 primeiro = ptr->getproximo();
 return *ptr;
 }
 if(ptr != 0 && ptr->getnome()==nm)
 {
 cout<<"elemento <"<<nm<<"> Removido"<<endl;
 pt->setproximo(ptr->getproximo()); // aqui proximo aponta para proximo elemento removido;
 ptr->setproximo(0); // removo o elemento desejado;
 return *ptr; // retorno a lista;
 }
 }
 }
}
// aqui faço exibir a lista;
void lista::exibir()
{
 if(primeiro == 0)
 {
 cout<<"a lista esta vazia "<<endl; //caso nada, retorno lista vazia;
 }
 // quando se tem valores, faço busca exibindo passo a passo;
 else
 {
 cout<<"\na lista é "<<endl;
 pessoa *ptr = primeiro;
 while (ptr!=0)
 {
 cout<<ptr->getnome()<<endl;
 ptr = ptr->getproximo();
 }
 cout<<"\n";
 }
}
Algoritmos Prontos/fila/fila.pro.user
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop
 Desktop
 {528da7ad-a39b-4f4c-ab64-a2a815ce0b01}
 0
 0
 0
 
 /home/rick/Documentos/ED - exemplos/Algoritmos/build-fila-Desktop-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 /home/rick/Documentos/ED - exemplos/Algoritmos/build-fila-Desktop-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 -w
 -r
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 fila
 
 Qt4ProjectManager.Qt4RunConfiguration:/home/rick/Documentos/ED - exemplos/Algoritmos/fila/fila.pro
 
 fila.pro
 false
 true
 
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 1
 
 
 ProjectExplorer.Project.Updater.EnvironmentId
 {966055ba-b836-4a12-aafd-ade71c6837b1}
 
 
 ProjectExplorer.Project.Updater.FileVersion
 15

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes