Estou com alguns problemas num quicksort aqui, ele tem q organizar uma lista dinamica simplesmente encadeada, na hora da inserção, vou por as classes aqui
Classe Pont
public class Pont{
int valor;
Pont prox;
public Pont( int v ){
valor = v;
prox = null;
}
}
Classe Lista Encadeada
public class ListaEncadeada{
Pont ini = null;
Pont fim = null;
int tam = 0;
Pont pv;
public ListaEncadeada(){
}
public void PushIni( int v ) {
Pont novo = new Pont(v);
if( ini == null ){
ini = novo;
fim = novo;
tam = 1;
}else{
/* Pont aux = ini;
ini = novo;
ini.prox = aux;*/
pv = ini;
QuickSort( novo, 1, tam );
// fim = novo;
tam += 1;
}
}
public void PushFim( int v ){
Pont novo = new Pont(v);
if( fim == null ){
ini = novo;
fim = novo;
tam += 1;
}else{
fim.prox = novo;
fim = novo;
tam += 1;
// QuickSort( 0, tam );
}
}
public int PopPos(int pos) throws ListaException{
Pont aux = ini;
Pont ant = ini;
int val = 0;
if( ini == null ){
throw new ListaException( "ERRO: Lista Vazia" );
}else{
if( pos < 1 || pos > tam ){
throw new ListaException( "ERRO: Posição invalida" );
}else{
if( pos == 1 ){
val = ini.valor;
ini = ini.prox;
tam -= 1;
}else{
for( int cont = 1; cont<= pos -2; cont++ ){
ant = ant.prox;
}
for( int cont = 1; cont <= pos-1; cont++ ){
aux = aux.prox;
}
val = aux.valor;
aux = aux.prox;
ant.prox = aux;
tam -=1;
}
return val;
}
}
}
public void QuickSort( Pont n, int i, int t ){
Pont pivo = pv;
int value = n.valor;
if( t == 1 ){
if( value > pivo.valor ){
pivo.prox = n;
// tam += 1;
}else{
n.prox = pivo;
pivo = n;
// tam += 1;
}
}else{
if( t == 2 ){
if( value > pivo.valor ){
if( value > pivo.prox.valor ){
Pont aux = pivo.prox;
aux.prox = n;
//tam += 1;
}else{
Pont aux = pivo.prox;
pivo.prox = n;
n.prox = aux;
//tam += 1;
}
}else{
n.prox = pivo;
pivo = n;
// tam += 1;
}
}else{
int p = (t - i)/2;
for( int cont = 1; cont <= p; cont++ ){
pv = pv.prox;
t -= 1;
}
if( pv.valor == value ){
Pont aux = pivo.prox;
pivo.prox = n;
n.prox = aux;
}else{
if( pv.valor > value ){
QuickSort( n, 0, t );
}else{
QuickSort( n, p, t );
}
}
}
}
}
public String recuperaElementos(){
StringBuilder sb = new StringBuilder();
Pont primeiro = ini;
//verifica se a elementos na Fila
while( primeiro!= null ) {
//adiciona o ID ao sb e depois incrementa primeiro11
sb = sb.append( primeiro.valor + "-" );
primeiro = primeiro.prox;
}
return sb.toString();
}
}
o codigo da lista esta bem extenso, mas quando eu uso a lista e vou usar para imprimir os elementos eles não imprimem, e eu fico sem saber que falor atribuir para a variavel ini para o RecuperaElementos() funcionar perfeitamente, alguem ai sabe me dizer?
PS: Quando eu usava que Pont pivo = ini funcionava, e agora com pv naum funciona.
PS2: Uso o NetBeans IDE 5.0
agradeço desde já