Listas circulares

bankai1991 Seguir

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Nov 2013
Mensajes
5
hola acudo a ustedes por que no se que es lo que estoy haciendo mal,tengo este programa que hice en netbeans y es sobre listas circulares como quitarlas,buscar en ellas y como ilo hice insertar un dato en una lista,,no se si es que mi logica esta mal o que pero no me bota ningun error pero cuando lo voy a ejecutar no hace nada,me podrian ayudar ustedes a ver si algo de lo que e hecho tiene algun error o esta mal declarado llevo una semana intentando correr el programa y no pude solo,agradezco cualquier opinion
post data : estoy aprendiendo XD

// en esta parte cargo todas las instrucciones de eliminar,buscar e insertar


package listacircular;

import java.awt.Graphics;

public class lista {
class listacircular{
nodo cab;
listacircular (){
cab= null;
}

public void insertar (int n ){
int contador=0;
nodo nuevo;
nuevo=new nodo(n);
if(cab==null){
nuevo.sig=nuevo;
contador=contador+1;
}
else{
nuevo.sig=cab.sig;
cab.sig=nuevo;
contador=contador+1;
}
cab=nuevo;
}
public void listar(Graphics g){

nodo q=cab;
int col=0;
if(cab==null){
return;
}
do{
g.drawString(""+q.info,15+ col*45,60);
q=q.sig;
col++;
}while(q!=cab);
}
public nodo buscar(int n){
nodo q=cab;
if(cab==null){
return null;
}do{
if(q.info==n)
return q;
q=q.sig;

}while(q!=cab);
return null;
}
public int retirar (nodo p){
nodo q;
if(cab == null){
return -1;

}
if(p == null){
return -1;}

if(cab == cab.sig){

return -1;
}
q=p.sig;
p.sig=q.sig;
if(q==cab)
cab=p;
return 1;
}
}



}



//en esta parte imprimo los datos no se si aqui es donde este el error




package listacircular;

import java.awt.Button;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.TextField;
import javax.swing.JApplet;


public class ListasCir extends JApplet {
int sw;
int numero;
ListaCircular lista =new ListaCircular();
TextField entra = new TextField(4);
TextField retirar = new TextField(4);

Button listar = new Button("Listar");

public ListasCir(){
}
public void init()
{
add(entra);
add(listar);
add(retirar);

entra.requestFocus();
resize(320,240);

}
public void paint (Graphics g)
{
if(sw==1){
lista.insertar(numero);

}if(sw==2){

lista.listar(g);
}
if(sw==3){
nodo p= lista.buscar(numero);
if(p==null)
g.drawString("No existe nodo despues de p", 15, 50);
else {
if(lista.retirar(p) !=-1)
g.drawString("Retirado nodo despues de"+numero,14, 50);
else g.drawString("Nose hizo ningun retiro",15,50);
}
}


}
public boolean action (Event e, Object o){

if(e.target==entra){
String s=entra.getText();
Integer i =new Integer(s);
numero = i.intValue();
entra.setText("");
sw=1;
repaint();
return true;
}
if(e.target==retirar){

String s=retirar.getText();
Integer i = new Integer(s);
numero = i.intValue();
retirar.setText("");
sw=3;
repaint();
return true;
}
if(e.target==listar){
sw=2;
repaint();
return true;

}
return false;
}


}


}
//aqui creo el nodo

package ListaCircular;

public class nodo {
int info;
public nodo (int info){
this.info=info;
}
nodo sig;
}
 

hasdpk

Delta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
30 Abr 2013
Mensajes
601
¿A que te refieres con listas circulares?
 

bankai1991

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Nov 2013
Mensajes
5
hola pues me refiero a lists circulares como el recorrido de una lista de manera circular como ,el problema en si es que el programa esta bien pero no me hace nada,al compilarlo no me bota errores pero por alguna razon no hace nada no me pide los datos ni aparece nada en pantalla no se realmente que estoy haciendo mal
 

bankai1991

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Nov 2013
Mensajes
5
hola disculpa si me faltaba el main,mira pues el programa no me bota ningun error ni nada no se si es que estoy ubicando mal las clases o que estoy haciendo mal y con los programas que e hecho me pasa lo mismo voy a copar de nuevo el codigo con las correcciones que hice,en verdad estoy preocupado entiendo el codigo y como hacerlo pero no se por que no me imprime nada y no hace nada el programa gracias de antemano
Insertar CODE, HTML o PHP:
//en esta clase coloco todos los metodos no se si ese es el error 


package listacircular;

import java.awt.Graphics;

public class ListaCircular {
Nodo cab;
ListaCircular (){
cab= null;
}

   public void insertar (int n ){
    
    Nodo nuevo;
    nuevo=new Nodo(n);
    if(cab==null){
        nuevo.sig=nuevo;
       
    }
    else{
    nuevo.sig=cab.sig;
    cab.sig=nuevo;
    
    }
    cab=nuevo;
    }
    void listar(Graphics g){
    
    Nodo q=cab;
    int col=0;
    if(cab==null){
        return;
    }
    do{
        g.drawString(""+q.info,15+ col*45,60);
        q=q.sig;
        col++;
    }while(q!=cab);
    }
    Nodo buscar(int n){
    Nodo q=cab;
    if(cab==null){
        return null;
    }do{
    if(q.info==n)
        return q;
    q=q.sig;
    
    }while(q!=cab);
    return null;
    }
    int retirar (Nodo p){
    Nodo q;
    if(cab == null){
    return -1;
    
    }
    if(p == null){
    return -1;}
    
    if(cab == cab.sig){
    
    return -1;
}
    q=p.sig;
    p.sig=q.sig;
    if(q==cab)
    cab=p;
    return 1;
    }
    
   
    
    public static void main(String[] args) {
       
    }
    
}


// en esta otra clase lo que hago es imprimir los datos 



package listacircular;

import java.awt.*;
import javax.swing.JApplet;

public class ListasCir extends JApplet {

   int sw;
    int numero;
    ListaCircular lista =new ListaCircular();
    TextField entra = new TextField(4);
    TextField retirar = new TextField(4);
   
    Button listar = new Button("Listar");
    
    public ListasCir(){
     }
public void init()
{
add(entra);
add(listar);
add(retirar);

entra.requestFocus();
resize(320,240);

}
   public void paint (Graphics g)
   {
   if(sw==1){
   lista.insertar(numero);
   
   }if(sw==2){
   
   lista.listar(g);
   }
   if(sw==3){
   Nodo p= lista.buscar(numero);
   if(p==null)
   g.drawString("No existe nodo despues de p", 15, 50);
   else {
       if(lista.retirar(p) !=-1)
       g.drawString("Retirado nodo despues de"+numero,14, 50);
       else g.drawString("Nose hizo ningun retiro",15,50);
   }
   }
   
   
   }
    public boolean action (Event e, Object o){
    
    if(e.target==entra){
        String s=entra.getText();
        Integer i =new Integer(s);
        numero = i.intValue();
        entra.setText("");
        sw=1;
        repaint();
        return true;
    }
    if(e.target==retirar){
        
        String s=retirar.getText();
        Integer i = new Integer(s);
        numero = i.intValue();
        retirar.setText("");
        sw=3;
        repaint();
        return true;
    }
    if(e.target==listar){
    sw=2;
    repaint();
    return true;
    
    }
    return false;
    }

   
}


   
//en esta otra clase crear los nodos 

package listacircular;


public class Nodo {
    
int info;
      Nodo (int info){
         this.info=info;
    }
    Nodo sig;
}

espero que ahora si se entienda un poco mejor gracias en verdad
 
Arriba