jueves, 3 de marzo de 2016

COMO SE TRABAJA CON LIFO Y FIFO

LIFO Y FIFO (PILAS Y COLAS)
LIFO(PILAS)
  • Una pila  (Stack  en ingles) ES PARTE DE LOS TDA es una lista ordenada o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (DEL ingles Last In First Out, ultimo en entrar, primero en salir) que permite almacenar y recuperar datos.

  • Esta estructura TDA se usa en multitud de ocasiones en el área de la informática debido a su simplicidad y ordenación implícita de la propia estructura.
  • En todo momento solo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en ingles (en español a veces llamado Tope)). La operación sacar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad, que pasa a ser el nuevo TOS.

  • Operaciones con Pilas: Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones  modernas de las pilas se suelen añadir más de uso habitual:
  • Crear
  • Tamaño
  • Apilar
  • Desapilar
  • Vacía

  • Métodos para las pilas:
  • Push
  • Pop
  • Peek
  • Size
  • Get
  • Set
  • Search
  • System.out.println(<pila>);
Estos son algunos de los más usados

  • Ejemplo>pilas
import java.util.Stack;
public class NewMain {
   public static void main(String[] args) {
       Stack s = new Stack();
       s.push("Pila");
       s.push("En");
       s.push("Java");
       System.out.println(s);
   }
}

FIFO (COLAS)
  • Una cola (también llamada fila) es otro TDA, es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO debido a que el primer elemento en entrar será el primero en salir.

  • Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.

Métodos para colas:
  • addFirst
  • RemoveLast
  • peekLast=>front
  • Size
  • Get
  • Set
  • System.out.println(<colas>);
Estos son algunos de los más usados

Operaciones Básicas con Colas
  • Crear
  • Encolar
  • Desencolar
  • Frente

Nota: las librerías para trabajar con pilas y colas son:
Para pila: import java.útil.Stack;
Para cola: import java.útil.linkedList;
Import java.útil.Colletions;



EJEMPLO  DE PILAS Y COLAS


CODIGO:
import java.util.Stack;
import java.util.Collections;
import java.util.LinkedList;
import javax.swing.JOptionPane;

public class IngresoPila {
//Creo mi objeto Stack(Es una libreria que se utiliza para ingresar datos a una pila de Tipo String(cadena)

   Stack<String> pila = new Stack<String>();
   LinkedList cola = new LinkedList();
//este meto sirve para llenar la pila(apilar)
   void ingresoApila() {

       String pl1 = String.valueOf(Menu_Pila.jTextField1.getText());
       String pl2 = String.valueOf(Menu_Pila.jTextField2.getText());

       if (!Menu_Pila.jTextField1.getText().equals("") && !Menu_Pila.jTextField2.getText().equals("")) {
           pila.push(pl1);
           pila.push(pl2);

           Menu_Pila.jTextArea1.setText(String.valueOf(pila));
         
       } else {
           JOptionPane.showMessageDialog(null, "¡¡Porfavor Llenar Ambas Cajas!!");
       }
         Menu_Pila.jTextField1.setText("");
           Menu_Pila.jTextField2.setText("");
   }
//este metodo sirve para sacar los datos de la pila(desapilar)
   void limpiarPila() {
       while (!pila.empty()) {

           Menu_Pila.jTextArea1.setText(pila.pop());
       }
       JOptionPane.showMessageDialog(null, "¡Pila Vacia!");
   }

   void cerrarPrograma() {
       int cerrar = JOptionPane.showConfirmDialog(null, "Elija Opcion¡¡");
       if (cerrar == JOptionPane.YES_OPTION) {
           System.exit(0);
       }
       if (cerrar == JOptionPane.NO_OPTION) {
           JOptionPane.showMessageDialog(null, "Puede Continuar Insertando Datos\n*_*");
       }
       if (cerrar == JOptionPane.CANCEL_OPTION) {
           JOptionPane.showMessageDialog(null, "Puede Continuar Insertando Datos *_*");
       }
   }//cierra el tema de pilas

   //habre el tema de colas
   
   void encolar() {
       String col1 = String.valueOf(Menu_Pila.jTextField1.getText());
       String col2 = String.valueOf(Menu_Pila.jTextField2.getText());
       cola.addFirst(col1);
       cola.addFirst(col2);
       Menu_Pila.jTextArea2.setText(String.valueOf(cola));
   }

   void desencolar() {
       String col1 = String.valueOf(Menu_Pila.jTextField1.getText());
       String col2 = String.valueOf(Menu_Pila.jTextField2.getText());
       cola.removeLast();
       Menu_Pila.jTextArea2.setText(String.valueOf(cola));
   }
   void ordenarCola(){
       Collections.sort(cola);
   }
}