+1 voto
por en Java
Hola tengo que escribir un programa en java que lea una cadena de caracteres, metiendo cada carácter en
una pila a medida que se lee y añadiéndolo simultáneamente a una cola, quisiera saber como se hace esto.

Saludos,

3 Respuestas

+1 voto
por (5.4k puntos)

A ver si lo he entendido... Lo primero que hacemos es leer la cadena:

// Leemos una cadena
Scanner reader = new Scanner(System.in);
String sCadena = reader.next();
System.out.println("Cadena insertada: " + sCadena);

Ahora la recorremos y vamos insertando en una pila (Stack) y en una cola (LinkedList):

// Metemos cada carácter en una pila y en una cola
Stack<Character> pila = new Stack<Character>();
LinkedList<Character> cola = new LinkedList<Character>();
for (int x=0;x<sCadena.length();x++) {
  pila.add(sCadena.charAt(x));
  cola.add(sCadena.charAt(x));
}

Te adjunto también la forma en la que se vacían la pila y la cola para que veas que las pilas van apilando los elementos y nos pueden servir para dar la vuelta a una cadena.        

// Vaciamos la pila
System.out.println("--Pila--");
while (!pila.empty())
  System.out.println(pila.pop());

// Vaciamos la cola
System.out.println("--Cola--");
while (!cola.isEmpty())
  System.out.println(cola.pop());

Espero que fuese lo que estabas buscando y sobre todo que te sirva. :-D

0 votos
por (340 puntos)
Mra carnal con este codigo podras (insertar, extraer, imprimir los datos de una pila)

espero te funcione de algo. Saludos

public class Pila {
    
    class Nodo {
        int info;
        Nodo sig;
    }
    
    private Nodo raiz;
    
    public Pila () {
        raiz=null;
    }
    
    public void insertar(int x) {
        Nodo nuevo;
        nuevo = new Nodo();
        nuevo.info = x;
        if (raiz==null)
        {
            nuevo.sig = null;
            raiz = nuevo;
        }
        else
        {
            nuevo.sig = raiz;
            raiz = nuevo;
        }
    }
    
    public int extraer ()
    {
        if (raiz!=null)
        {
            int informacion = raiz.info;
            raiz = raiz.sig;
            return informacion;
        }
        else
        {
            return Integer.MAX_VALUE;
        }
    }
    
    public void imprimir() {
        Nodo reco=raiz;
        System.out.println("Listado de todos los elementos de la pila.");
        while (reco!=null) {
            System.out.print(reco.info+"-");
            reco=reco.sig;
        }
        System.out.println();
    }
    
    public static void main(String[] ar) {
        Pila pila1=new Pila();
        pila1.insertar(10);
        pila1.insertar(40);
        pila1.insertar(3);
        pila1.imprimir();
        System.out.println("Extraemos de la pila:"+pila1.extraer());
        pila1.imprimir();        
    }
}
0 votos
por (600 puntos)

Hola bueno primeramente te explicare que es una pla y una cola en java:

Pila:

primeramente la pla se encarga que al ingresar el primer dato al registro ese mismo sera el ultimo en salir 

ejemplod de pila:

public class PilaEstatica {
    public static void main(String[] args) {
        int dato;
        int pila[]=new int[5];
        Scanner teclado=new Scanner(System.in);
        for(int tope=0;tope<=4;tope++){
        System.out.println("Proporciona datos para la pila");
        dato=teclado.nextInt();
        pila[tope]=dato;
        }
        for (int tope=4;tope>=0;tope--)
            System.out.println("La pila tiene los siguientes datos: "+pila[tope]);
        }
    }

Cola: Una cola es simplemente un lugar para almacenar cosas, donde esas cosas se insertan una detrás de otra y para extraer siempre se lo hace por adelante de la cola donde se encuentra el primer elemento.

Ejemplo: 

public class Colas {
    public static class ClaseColas {  // Declaracion de la clase de Colas
         static int max=10;  // Tamano maximo de la Cola
         static int cola[]= new int[max]; // Declaracion del arreglo
         static int frente, fin; // Indicadores de inicio y fin de la Cola
        
         ClaseColas() { // Constructor que inicializa el frente y el final de la Cola
          frente=0;   fin=0;
          System.out.println("Cola inicializada !!!");
         }
        
         public static void Insertar(int dato) {
          if(fin==max) { // Esta llena la Cola?
          System.out.println("\nCola llena !!!");
           return;
          }
          cola[fin++]=dato;
          System.out.println("Dato insertado !!!");
         }
        
         public static void Eliminar() {
          System.out.println("\n\n<<< ELIMINAR >>>");
          if(frente==fin) {  // Esta vacia la Cola?
           System.out.println("\nCola vacia !!!");
           return;
          }
             System.out.println("Elemento eliminado: "+cola[frente++]);
         }
        
         public static void Mostrar() {
          int i=0;
          System.out.println("\n\n<<< MOSTRAR >>>");
          if(frente==fin)  System.out.println("\nCola vacia !!!");
          for(i=frente; i<fin; i++) {
           System.out.println("cola["+i+"]="+" "+cola[i]);
          }
          System.out.println("\nFrente= "+frente);
          System.out.println("Final = "+fin);
          System.out.println("Max  = "+max);
         }
    }
  
    static ClaseColas Cola=new ClaseColas();  // Declaracion del objeto Cola
  
    // Funcion principal
    public static void main(String args[]) throws IOException {
     int op=0;
     do {
           System.out.println("\n\n<<< COLAS >>>");
           System.out.println("1.- Altas");
           System.out.println("2.- Eliminar");
           System.out.println("3.- Mostrar");
           System.out.println("0.- Salir");
           System.out.print("Opcion? ---> ");
           op=getInt();
         
           switch(op) {
            case 1 : Altas();              break;
            case 2 : Cola.Eliminar(); break;
            case 3 : Cola.Mostrar();  break;
           }
     }while(op!=0);
    }
  
    public static void Altas() throws IOException {
     int elemento=0;
     System.out.println("\n\n<<< ALTAS >>>");
     System.out.print("Elemento a insertar? ---> ");
     elemento=getInt();
     Cola.Insertar(elemento); // Invocar el metodo Insertar del objeto Cola
    }
  
    // Funcion para capturar una cadena desde el teclado
     public static String getString() throws IOException {
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);
            String s = br.readLine();
            return s;
        }   
      
        // Funcion para capturar un entero desde el teclado
        public static int getInt() throws IOException {
            String s = getString();
            return Integer.parseInt(s);
        }   
}

Espero y te sirva,,,,

Preguntas relacionadas

0 votos
0 respuestas
preguntado por Gabriela (20 puntos) Feb 16, 2020 en Java
0 votos
0 respuestas
preguntado por ppito (20 puntos) Ene 28, 2016 en .Net
0 votos
5 respuestas
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...