Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller de
Algoritmos y
Estructuras
de Datos I
1
Implementación de Pilas con
Listas Enlazadas
Separar texto
- POP: sacar
Las pilas pueden ser representadas por medio de una lista unidireccional o
por un array lineal.
apilar(x)
x = desapilar()
Consulta:
Pila Vacía
Elemento en la cima
Interfaz Pila
throws DesbordamientoInferior;
throws DesbordamientoInferior;
private Object[] S;
capacidad = cap;
S = new Object[capacidad];
if( esVacia() )
return S[ cima ];
Clase Nodo
class Nodo{
Object dato;
Nodo siguiente;
//constructor
dato = o;
siguiente = n;
Clase PilaEnlazada
public PilaEnlazada(){
cima = null;
tamanyo = 0;
return ( cima==null );
cima = n;
tamanyo++;
if( esVacia() )
return cima.dato;
if (esVacia())
cima = cima.siguiente;
tamanyo--;
return temp;
Caso Práctico
package uesiglo21.taller1.model;
this.dni = dni;
this.nomb = nomb;
this.apel = apel;
return dni;
this.dni = dni;
return nomb;
this.nomb = nomb;
this.apel = apel;
String aux;
return aux;
Clase Alumno
package uesiglo21.taller1.model;
super(dni,nomb,apel);
this.legajo=legajo;
Mat[i]= null;
}
public String getLegajo() {
return legajo;
this.legajo = legajo;
return Mat;
Mat = mat;
if (Mat[i] == null) {
Mat[i]=m;
return true;
return false;
String aux;
aux=super.toString();
aux+="\nLegajo: " + legajo;
aux+="\nMaterias: ";
return aux;
Clase Materia
package uesiglo21.taller1.model;
this.denom = demon;
this.semestre = semestre;
return denom;
this.denom = denom;
return semestre;
this.semestre = semestre;
}
String aux;
return aux;
Interfaz Pila
package uesiglo21.taller1.model;
Clase NodoPila
package uesiglo21.taller1.model;
NodoPila siguiente;
// El constructor del nodo recibo el dato a guardar y el nodo siguientes
public NodoPila(Object O, NodoPila siguiente){
this.dato=O;
this.siguiente=siguiente;
return siguiente;
this.siguiente = siguiente;
return dato;
this.dato = dato;
Clase PilaLista
package uesiglo21.taller1.model;
public PilaLista(){
cima=null;
tamanio=0;
return tamanio;
if(cima==null){
return true;
}else{
return false;
cima=new NodoPila(o,cima);
tamanio++;
cima=cima.getSiguiente();
tamanio--;
if (esVacia()){
return cima.getDato();
if (esVacia()){
cima=cima.getSiguiente();
tamanio--;
if (esVacia()){
return cima.getDato();
}
}
Clase Test
package uesiglo21.taller1.view;
import uesiglo21.taller1.model.*;
try {
// Creamos 3 Materias
// Creamos 4Alumnos
Alumno a4 = new
Alumno(31549677,"Pedro","Gonzalez","SOF-000094");
a1.cargarAlumno(m2);
a1.cargarAlumno(m3);
a2.cargarAlumno(m1);
a2.cargarAlumno(m2);
a2.cargarAlumno(m3);
a3.cargarAlumno(m1);
a3.cargarAlumno(m2);
a3.cargarAlumno(m3);
a4.cargarAlumno(m1);
a4.cargarAlumno(m2);
a4.cargarAlumno(m3);
System.out.println("--------Apilar---------");
pl.apilar(a1);
System.out.println("----");
System.out.println(pl.cima().toString());
pl.apilar(a2);
System.out.println("----");
System.out.println(pl.cima().toString());
pl.apilar(a3);
System.out.println("----");
System.out.println(pl.cima().toString());
pl.apilar(a4);
System.out.println("----");
System.out.println(pl.cima().toString());
System.out.println("-----Cima-----");
System.out.println(pl.cima().toString());
System.out.println("\n---------Desapilar--------");
pl.desapilar();
System.out.println("---Nueva Cima----");
System.out.println(pl.cima().toString());
System.out.println("\n---------Desapilar y Cima---------");
System.out.println("---Nueva Cima----");
System.out.println(pl.cimaYDesapilar().toString());
System.out.println("\n-----Desbordamiento-----");
pl.desapilar();
pl.desapilar();
pl.desapilar();
} catch (Exception e) {
System.out.println("Se ha producido un error al manipular la
Pila");
}
Referencia Bibliográfica
Mark Allen Weiss, “Estructuras de Datos en Java”, ed. Addison Wesley. (2000)
Bibliografía Ampliatoria