Java - Colas

 
Vista:
sin imagen de perfil

Colas

Publicado por oscar (6 intervenciones) el 11/02/2017 16:42:29
Buenos dias, tengo una consulta en un codigo que estoy realizando. El caso es el siguiente, tengo una cola de tamaño "n" el cual yo inserto, cuando inserto el valor este debe ser doble, estar en 2 posiciones. Este es mi codigo.

clasecola.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package packageClases;
//metodos funcion, constructo
public class ClaseCola {
    private int Cola[];
    private int first,last;
 
    public void creaCola(int tamaño){
     Cola=new int[tamaño];
     first=-1; last=-1;
 
   public void insertaValorDoble(int valor){
        int indMax=Cola.length-1;
        if(last < indMax){
         last=last+1;
         Cola[last]=valor;
         Cola[last-1]=valor;
        }
       if(first==-1){
        first=0;
       }
    }
  public String muestraArreglo(){
        String cadena="";
        if(first>-1){
            for(int i=first; i<=last; i++){
             cadena=cadena+Cola[i]+" ";
            }
        }
        else
           cadena="Cola esta vacia";
 
        return cadena+"\n";
    }
}

este es un jframe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package applicationcola2;
 
import packageClases.ClaseCola;
 
public class FrameCola extends javax.swing.JFrame {
 
    ClaseCola oCola;
    public FrameCola() {
        initComponents();
    }
 
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       oCola=new ClaseCola();
       int n=Integer.parseInt(jTextField1.getText());
       oCola.creaCola(n);
    }
 
 private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
        jTextArea1.append(oCola.muestraArreglo());
    }
 
    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
         int valor=Integer.parseInt(jTextField1.getText());
       oCola.insertaValorDoble(valor);
       jTextArea1.append(oCola.muestraArreglo());
    }

cuando lo ejecuto, primero creo una cola de 4 elementos

figura1


figura2

como ven, primero se crea el doble 10, pero cuando inserto 20, los 2 valores de 10 se reducen a uno, quisiera saber en que estoy errando.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Colas

Publicado por cristian (2 intervenciones) el 19/02/2017 19:22:44
cambia los metodos de crearCola e insertar por estos métodos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void creaCola(int tamaño){
    int y=tamaño*2;
    Cola=new int[y];
    first=-1; last=-1;
}
public void insertaValorDoble(int valor){
 
    int indMax=Cola.length-1;
 
    if(last < indMax ){
 
       last=last+2;
       Cola[last]=valor;
       Cola[last-1]=valor;
 
    }
    if(first==-1){
       first=0;
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar