Ir al contenido principal

Pilas en Java Ejemplo y Código

Una pila es una estructura de datos en la cual podemos almacenar información para su posterior procesamientos, el acceso a sus elementos almacenados es de tipo LIFO (del inglés Last In, First Out, «último en entrar, primero en salir») lo que quiere decir que el ultimo elemento almacenado o apilado es el primer elemento en salir o en ser desapilado.

Pilas en java 

Para hacer uso de las pilas en java es necesario crear una clase nodo la cual representara cada elemento u objeto que ara parte de la pila, posteriormente crear una clase pila la cual permitirá unir cada uno de los nodos para permitir generar la estructura de datos y hacer diferentes procesos e interactuar con los elementos almacenados.

Para dar un ejemplo crearemos un proyecto java el cual permitirá haciendo uso de las Pilas  almacenar (n) número de estudiantes los cuales tengan como atributos: (Código, Nombre y Edad), listarlos e imprimir la suma de todas las edades.

Para realizar este proyecto Crearemos las Clases Estudiante la cual permitirá crear objetos de tipo estudiante, la clase Nodo la cual almacenara objetos de tipo estudiante y la clase Pila la cual funcionara como estructura de datos almacenando los estudiantes u objetos de nodos creados:

Clase Principal:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pilas;

/**
 *
 * @author Usuario
 */
public class EjecutarPilas {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //Creamos una pila para almacenar los estudiantes
        Pila pilaDeEstudiantes = new Pila();

        //Apilamos (agregamos) estudiantes en la pila
        pilaDeEstudiantes.apilar(new Estudiante(8234, "Mauricio", 20));
        pilaDeEstudiantes.apilar(new Estudiante(8235, "Mariana", 20));
        pilaDeEstudiantes.apilar(new Estudiante(8236, "Camila", 24));

        //Imprimimos los estudiantes almacenados en la pila
        pilaDeEstudiantes.imprimir();

        //Imprimimos la suma de de las edades de todos los estudiantes almacenados en la pila
        System.out.println("La suma de las edades es: " + pilaDeEstudiantes.sumaDeEdades());

    }

}


Clase Estudiante:

package pilas;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Usuario
 */
public class Estudiante {

    //Atributos
    private int codigo;
    private String nombre;
    private int edad;

    //Constructores
    public Estudiante() {
    }

    public Estudiante(int codigo, String nombre, int edad) {
        this.codigo = codigo;
        this.nombre = nombre;
        this.edad = edad;
    }

    //Getters and Setters
    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

}

Clase Nodo:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pilas;

/**
 *
 * @author Usuario
 */
public class Nodo {

    //Atributos
    private Estudiante datosEstudiante;
    private Nodo siguinte;

    //Constructor
    public Nodo(Estudiante datosEstudiante) {
        this.datosEstudiante = datosEstudiante;
    }

    //Getters and Setters
    public Estudiante getDato() {
        return datosEstudiante;
    }

    public void setDato(Estudiante datosEstudiante) {
        this.datosEstudiante = datosEstudiante;
    }

    public Nodo getSiguinte() {
        return siguinte;
    }

    public void setSiguinte(Nodo siguinte) {
        this.siguinte = siguinte;
    }

}

Clase Pila:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pilas;
/**
 *
 * @author Usuario
 */
public class Pila {

    Nodo raiz;

    //metodo para agregar un estudiante a la pila
    //si la pila esta vacia el estudiante seria la raiz de la pila
    //si la pila ya tiene estudiantes se establece como raiz al ultimo ingresado
    public void apilar(Estudiante datosEstudiante) {
        Nodo nuevo = new Nodo(datosEstudiante);
        if (raiz == null) {
            raiz = nuevo;
        } else {
            if (datosEstudiante != null) {
                nuevo.setSiguinte(raiz);
                raiz = nuevo;
            }
        }
    }

    //metodo para listar los estudiantes almacenados en la pila
    public void imprimir() {
        Nodo temp = raiz;
        while (temp != null) {
            System.out.print("Código: " + temp.getDato().getCodigo() + "\nNombre: " + temp.getDato().getNombre() + "\nEdad: " + temp.getDato().getEdad() + "\n\n");
            temp = temp.getSiguinte();
        }
    }

    //metodo para sumar las edades de todos los estudiantes almacenados en la pila
    public int sumaDeEdades() {
        Nodo temp = raiz;
        int suma = 0;
        while (temp != null) {
            suma += temp.getDato().getEdad();
            temp = temp.getSiguinte();
        }

        return suma;
    }

} 
 

Descargar zip del Proyecto:

Comentarios

Entradas populares de este blog

Operaciones entre conjuntos: listas, pilas y colas JAVA

Crear dos Grupos los cuales almacenen (n) estudiantes los cuales deben  tener como atributos, Código, Nombre y Edad. Se debe realizar por cada una de las siguientes estructuras de datos (listas doblemente enlazadas, pilas y colas)  las Siguientes funciones: Unión: hacer la unión de los códigos de los estudiantes del grupo 1 y el grupo 2, imprimir solo los códigos resultantes de la unión. Intersección: comparar entre los dos grupos de estudiantes e imprimir los estudiantes que tengan edades comunes entre los dos grupos. Diferencia: comparar entre los dos grupos de estudiantes e imprimir los estudiantes que no tengan edad común entre los los grupos. Pertenencia: Comparar entre los dos grupos de estudiantes e imprimir los estudiantes que pertenecen a un solo grupo. Clase Main: /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. ...

PREGUNTAS Y RESPUESTAS MICROCONTROLADORES

1) Cuales son los elementos esenciales de la arquitectura Von Neumann?  los elementos esenciales de la arquitectura von neumann son los siguiente:  -Procesador: Encargado tanto de ejecutar las instrucciones de los programas que           proporcionamos al ordenador como de controlar y coordinar el funcionamiento del           resto de componentes. -Memoria​: Lugar donde se almacenan los datos y las instrucciones a tratar. -Interfaces de Entrada/Salida​: Dispositivos creados para poder intercambiar        información con el exterior de la máquina. -Buses: Las conexiones que interconectan los diferentes módulos que componen el           ordenador. 2) Indique las principales ventajas de la arquitectura Harvard?  - ​El tamaño de las instrucciones no está relacionado con el de los datos, ...