1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Java programa para manejar Pila de nodos menú vacía tamaño apilar retirar cima
« en: 27 de Julio 2022, 22:32 »
Estimados amigos, buenas tardes, acudo a ustedes debido a que tengo duda de como se podría implementar el siguiente menú:
1. Esvacia
2. Tamaño de la pila
3. Guardar un nuevo registro (apilar)
4. Eliminar un elemento de la pila(retirar)
5. El ultimo elemento de la pila(cima)
6. Buscar
7. Remover un elemento de la pila
8. Editar, permite cambiar un elemento de la pila por otro valor
9. Eliminar la pila
10. Listar Mostrar los elementos que se contienen dentro de las pilas
11. Salir
Sobre este ejercicio de pilas que ya he desarrollado.
Función principal:
Clase Nodo:
Clase pilas:
De antemano, agradezco todo su apoyo, muchas gracias.
Saludos con afecto,
ElMike
1. Esvacia
2. Tamaño de la pila
3. Guardar un nuevo registro (apilar)
4. Eliminar un elemento de la pila(retirar)
5. El ultimo elemento de la pila(cima)
6. Buscar
7. Remover un elemento de la pila
8. Editar, permite cambiar un elemento de la pila por otro valor
9. Eliminar la pila
10. Listar Mostrar los elementos que se contienen dentro de las pilas
11. Salir
Sobre este ejercicio de pilas que ya he desarrollado.
Función principal:
Código: [Seleccionar]
package ejemplopilas;
public class EjemploPilas {
public static void main(String[] args) {
Pilas pila=new Pilas();
pila.apilar(50);
pila.apilar(1);
pila.apilar(60);
pila.apilar(5);
pila.apilar(100);
pila.apilar(9);
pila.apilar(18);
System.out.println("el tamanio de la pila es:"+pila.getTamanio());
pila.apilar(55);
pila.apilar(99);
System.out.println("el tamanio de la pila es:"+pila.getTamanio());
}
}
Clase Nodo:
Código: [Seleccionar]
package ejemplopilas;
public class Nodo {
//Definir los atributos
private int valor;
private Nodo siguiente;
//Contructor
public void Nodo(){
this.valor=0;
this.siguiente=null;
}
//Metodos get y set
public int getValor(){
return valor;
}
public Nodo getSiguiente(){
return siguiente;
}
public void setValor(int valor){
this.valor= valor;
}
public void setSiguiente(Nodo siguiente){
this.siguiente = siguiente;
}
}
Clase pilas:
Código: [Seleccionar]
package ejemplopilas;
public class Pilas {
//Definiendo los atributos de la pila
private Nodo inicio;
private int tamanio;
//Constructor
public void Pila(){
inicio=null;
tamanio=0;
}
/** Consulta si la pila esta vacia
*@return true si el primer nodo (inicio), no apunta a otro nodo.
*/
public boolean esVacio(){
return inicio==null;
}
/**
* Consulta cuantos elementos (nodos) tiene la pila.
* @return numero entero entre (0,n)donde n es el numero de elementos
* que contenga la lista
*/
public int getTamanio(){
return tamanio;
}
public void apilar(int valor){
//Definir nuevo nodo
Nodo nuevo= new Nodo();
//Agrega al valor Nodo
nuevo.setValor(valor);
//Consultar si la pila esta vacia.
if(esVacio()){
//Inicializa la pila con el nuevo valor
inicio=nuevo;
}
//en caso contrario agrega el nuevo nodo al inicio de la pila
else{
nuevo.setSiguiente(inicio);
inicio= nuevo;
}
//Incrementa el contador del tamaño de la pila
tamanio++;
}
//Elimina el elemento que se encuentra en el tope de la pila
public void retirar(){
if(!esVacio()){
//Asigna como primer nodo al siguiente de la pila
inicio= inicio.getSiguiente();
//Decremento de la variable del contador del tamaño de la pila
tamanio--;
}
}
//Metodo que regresa el valor que esta en la cima de la pila
public int cima() throws Exception{
if(!esVacio()){
return inicio.getValor();
}
else
{
throw new Exception("La pila se encuentra vacia");
}
}
public boolean buscar(int referencia){
//Crear una copia de la pila
Nodo aux = inicio;
//Verificar si existe el elemento a buscar
boolean existe= false;
//Recorre la pila hasta llegar a encontrar el nodo o
//llegar al final de la pila
while(existe !=true && aux!=null){
//Compara si el valor del nodo es igual al valor de la referencia
if(referencia==aux.getValor()){
existe=true;
}
else
{
//Avanza al siguiente nodo
aux= aux.getSiguiente();
}
}
return existe;
}
}
De antemano, agradezco todo su apoyo, muchas gracias.
Saludos con afecto,
ElMike