aeds2/fonte/u09 Tabelas e dicionários/java/doidona/DoidonaSemTADsProntas.java

160 lines
3.8 KiB
Java

class DoidonaSemTADsProntas {
final int TAMT1 = 100;
final int TAMT3 = 100;
final int NULO = -0x7FFFFF;
int[] t1;
int[] t3;
Celula primeiroListaT2, ultimoListaT2;
No raizArvoreT2, raizArvoreT3;
public Doidona (){
t1 = new int[TAMT1];
t3 = new int[TAMT3];
for(int i = 0; i < TAMT1; i++){
t1[i] = NULO;
}
for(int i = 0; i < TAMT3; i++){
t3[i] = NULO;
}
primeiroListaT2 = ultimoListaT2 = new Celula();
raizArvoreT2 = raizArvoreT3 = null;
}
public int hashT1(int elemento){
}
public int hashT2(int elemento){
}
public int hashT3(int elemento){
}
public int rehashT3(int elemento){
}
public void inserir(int elemento){
int i = hashT1(elemento);
if(elemento == NULO){
// gerar msg de erro!!!!
} else if(t1[i] == NULO){
t1[i] = elemento;
}else if(hashT2(elemento) == 0){
inserirT3(elemento);
}else if (hashT2(elemento) == 1){
inserirLista(elemento);
}else if (hashT2(elemento) == 2){
raizArvoreT2 = inserirArvore(raizArvoreT2, elemento);
} else {
System.out.println("ERRO!!!!");
}
}
public void inserirT3(int elemento){
int i = hashT3(elemento);
if(t3[i] == NULO){
t3[i] = elemento;
} else {
i = rehashT3(elemento);
if(t3[i] == NULO){
t3[i] = elemento;
} else {
raizArvoreT3 = inserirArvore(raizArvoreT3, elemento);
}
}
}
public void inserirLista(int elemento){
ultimoListaT2.prox = new Celula(elemento);
ultimoListaT2 = ultimoListaT2.prox;
}
public No inserirArvore(No no, int elemento){
if(no == null){
no = new No (elemento);
} else if (no.elemento < elemento){
no.esq = inserirArvore(no.esq, elemento);
} else if (no.elemento > elemento){
no.dir = inserirArvore(no.dir, elemento);
} else {
System.out.println("Erro de Insercao");
}
return no;
}
public boolean pesquisar(int elemento){
boolean resp;
int i = hashT1(elemento);
if(t1[i] == NULO){
resp = false;
}else if(t1[i] == elemento){
resp = true;
}else if(hashT2(elemento) == 0){
resp = pesquisarT3(elemento);
}else if (hashT2(elemento) == 1){
resp = pesquisarLista(elemento);
}else if (hashT2(elemento) == 2){
resp = pesquisarArvore(raizArvoreT2, elemento);
} else {
resp = false;
System.out.println("ERRO!!!!");
}
return resp;
}
public boolean pesquisarT3(int elemento){
int i = hashT3(elemento);
if(t3[i] == NULO){
resp = false;
}else if(t3[i] == elemento){
resp = true;
} else {
i = rehashT3(elemento);
if(t3[i] == NULO){
resp = false;
} else if(t3[i] == elemento){
resp = true;
} else {
resp = pesquisarArvore(raizArvoreT3, elemento);
}
}
return resp;
}
public boolean pesquisarLista(int elemento){
boolean resp = false;
for(Celula i = primeiroListaT2.prox; i != null; i = i.prox){
if(i.elemento == elemento){
resp = true;
i = ultimoListaT2;
}
}
return resp;
}
public boolean pesquisarArvore(No no, int elemento){
boolean resp;
if(no == null){
resp = false;
} else if (no.elemento < elemento){
resp = pesquisarArvore(no.esq, elemento);
} else if (no.elemento > elemento){
resp = pesquisarArvore(no.dir, elemento);
} else {
resp = true;
}
return resp;
}
}