Está en la página 1de 4

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERIA DE SISTEMAS


E.A.P. INGENIERIA DE SISTEMAS

ESTRUCTURA DE DATOS

PRACTICA 6: Pilas

Ejercicio 1.- Implementación de Pila como vector, RECORRIDO por ambos direcciones
package Ejercicio1;
import java.util.Scanner;
public class Prueba {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arreglo;
arreglo=new int[15];
int[] arregloCopia=new int[15];
int opcion=0;
int cantidad=0;
Scanner entrada=new Scanner(System.in);
while(opcion<1||opcion>2) {
System.out.println("Usted quiere ingresar el arreglo desde el:");
System.out.println("1.-Comienzo");
System.out.println("2.-Final");
opcion=entrada.nextInt();
if(opcion<1||opcion>2) {
System.out.println("El dato es incorrecto. Por favor vuelva a ingresar :");
}
}
int opcion2=0;
int numero;
if(opcion==2) {
while(opcion2!=4) {

System.out.println("////////////////////////////////////////MENU////////////////////////////////////////");
System.out.println("1.-Ingresar");
System.out.println("2.-Mostrar y Eliminar");
System.out.println("3.-Mostrar");
System.out.println("4.-Salir");
opcion2=entrada.nextInt();

switch(opcion2) {
case 1:
System.out.print("Ingrese un numero : ");
numero=entrada.nextInt();
arreglo[cantidad]=numero;
cantidad++;
break;
case 2:
if(cantidad==0) {
System.out.println("Esta vacio el arreglo");
}
else
{

1
System.out.println("Numero :
"+arreglo[cantidad-1]);
arreglo[cantidad-1]=0;
cantidad--;
}
break;
case 3:
System.out.print("Arreglo :");
for(int i=0;i<cantidad;i++) {
System.out.print(arreglo[i]+" , ");
}
System.out.println();

}
}
}
else
{
while(opcion2!=4) {

System.out.println("////////////////////////////////////////MENU////////////////////////////////////////");
System.out.println("1.-Ingresar");
System.out.println("2.-Mostrar y Eliminar");
System.out.println("3.-Mostrar");
System.out.println("4.-Salir");
opcion2=entrada.nextInt();

switch(opcion2) {
case 1:
System.out.print("Ingrese un numero : ");
numero=entrada.nextInt();
for(int i=cantidad-1;i>=0;i--) {
System.out.println("i es "+i);
arreglo[i+1]=arreglo[i];
}
arreglo[0]=numero;
cantidad++;
break;
case 2:
if(cantidad==0) {
System.out.println("Esta vacio el arreglo");
}
else
{
System.out.println("Numero : "+arreglo[0]);
for(int i=0;i<cantidad;i++) {
arreglo[i]=arreglo[i+1];
}
arreglo[cantidad-1]=0;
cantidad--;
}
break;
case 3:
System.out.print("Arreglo :");
for(int i=0;i<cantidad;i++) {
System.out.print(arreglo[i]+" , ");

2
}
System.out.println();
}
}
}
}
}

Ejercicio 2.- Construcción PILA con ARRAYLIST

3
Ejercicio 3.- Implementación de Pila como Listan enlazada; añadir funcionalidades
public class Ejemplo {

public static void main(String[] args) {

//Creamos la lista
ListaEnlazada lista = new ListaEnlazada();
//Insercion de datos
lista.Insertar_Ultimo("Elemento 1");
lista.Insertar_Ultimo("Elemento 2");
lista.Insertar_Ultimo("Elemento 3");

//Creamos una lista enlazada auxiliar


ListaEnlazada aux = new ListaEnlazada();
while(!lista.Esta_Vacia()){

//Mostramos por consola, el primer elemento de la lista


System.out.println(lista.Primero().toString());

//Insertamos en la lista auxiliar


// el primer elemento de la lista original
// (añadimos por el final, no por el principio)
aux.Insertar_Ultimo(lista.Primero().toString());

//Quitamos el primer elemento


lista.Quitar_Primero();
}
//La lista auxiliar se copia a la lista original
//Haciendo que la lista original vuelva al estado original
lista = aux;
//La lista auxiliar se desvincula
aux = null;
}
}

Ejercicios Propuestos:
1. Recursividad a través de pilas de Factorial (N).
Ejemplo fac(4) = 4 * fac(3) = 4*(3*fac(2)) = 4*(3*2(fac(1))) = 4*(3*(2*1)) = 4*(3*2) = 24
2. La estructura de datos : PILA, se puede implementar por 2 vias : ArrayStacks (basado en vectores) y
LinkedStack (Basado en Listas enlazadas), haga las principales operaciones básicas de ambas.

También podría gustarte