Autor Tema: Cola Circular JAVA  (Leído 186 veces)

Sergio Perez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Cola Circular JAVA
« en: 16 de Octubre 2021, 08:01 »
Hola a todos, tengo un problema con lo siguiente:

Esta es mi clase Main:
Código: [Seleccionar]
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Cola cola = new Cola();
int op,n=0,i=0;

String cad=null;
do {
op=Integer.parseInt(JOptionPane.showInputDialog("MENU\n1.Insertar en la posicioni-esima\n2.Insertar antes de cierta cadena\n3.Insertar despues de cierta cadena\n4.Eliminar cadena\n5.Eliminar cadena de la posicion i-esima\n6.Mostrar lista ligada\n7.Salir"));

switch(op) {
case 1:
n=Integer.parseInt(JOptionPane.showInputDialog("¿Cuantos datos vas a dar de alta"));
for(i=1;i<=n;i++) {
cad=JOptionPane.showInputDialog("Digite el nombre");
cola.push(cad);
}
break;
case 2:
break;
case 3:
break;
case 4:
cola.pop();
break;
case 5:
cola.pop2();
break;
case 6:
cola.Mostrar();
break;
case 7:
break;
}
}while(op!=7);
}

}

la clase Cola.java
Código: [Seleccionar]
public class Cola {
Nodo inicio;
Nodo fin;

public Cola() {
inicio =null;
fin=null;


}

public boolean IsEmpty() {
if(inicio == fin && fin== null){
return true;

}else {
return false;

}

}

public void Mostrar() {
int i=0;
if(IsEmpty()) {
System.out.println("La cola esta vacia");

}else {
Nodo aux = inicio;
while(aux!=fin) {

System.out.println("\n[ ]"+i+" "+aux.cad);
i++;
aux = aux.siguiente;

}

System.out.println("\n[ ]"+i+" "+fin.cad);
}

}

public void push(String cad){  //Encola n-esimo elemento en la cola
Nodo aux = new Nodo();
aux.cad=cad;
if(IsEmpty()) {
inicio=aux;
fin=aux;
}else {
fin.siguiente= aux;
fin = aux;

}
}

public void push2(String cad){  //Encola n-esimo elemento en la cola
Nodo aux = new Nodo();
aux.cad=cad;
if(IsEmpty()) {
inicio=aux;
fin=aux;
}else {
fin.siguiente= aux;
aux.siguiente=inicio;
fin = aux;
}

}
public String pop(){
int i=0;
String elemento= null;
if(!IsEmpty()) {
if(inicio == fin) {
elemento=inicio.cad;
inicio=null;
fin= null;

}
else {
elemento = inicio.cad;
inicio = inicio.siguiente;

}

}
return elemento;

}

public String pop2(){//Elimina n-esimo elemento de la cola
int i=0;
String elemento= null;
if(!IsEmpty()) {
if(inicio == fin) {
elemento=inicio.cad;
inicio=null;
fin= null;

}
else {
elemento = inicio.cad;
fin.siguiente = inicio.siguiente;
inicio = inicio.siguiente;

}

}
return elemento;
}

}

Y la clase Nodo:
Código: [Seleccionar]
public class Nodo {
String cad;
Nodo siguiente;

}

Digamos que en la ejecución me arroja:
Citar
[ ]0 Pedro
[ ]1 Luis
[ ]2 Juan

Pero quiero saber como puedo aplicar las opciónes de
Citar
2.Insertar antes de cierta cadena y 3.Insertar después de cierta cadena

Osea preguntarle al usuario por ejemplo en que posicion quiere insertar en cada caso, y respete los demás valores sin sacarlo
Por ejemplo que
[ ]0 Pedro //modifique esta con la opc 2
[ ]1 Luis //respete esta posición
[ ]2 Juan //o modifique esta con la opc 3

Ya por último y esperando no abusar como manejar todo esto para que las cadenas tengan a lo más una longitud de 10 caracteres y el arreglo tener a lo más 50 localidades???  ;D
« Última modificación: 16 de Octubre 2021, 08:07 por Sergio Perez »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".