2.1 Listas
Concepto de Lista:
Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior.
Ejemplo en Lenguaje de Programación:![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSkM7iwZRXmXuDsk6hFCsHZyQBLL8_i_3rwga-oFrhyPtfDAxsEPUpt-WiS9ZbrxW6jJZO94JPKHsG5ueCineyx5Y14xUjWDCpe9EYJHXiThAVDVfk_qB-0FPTehyphenhyphenTPvlXL55fHfz07R4/s400/clase+stack1.png)
2.2 Pilas Estáticas y Dinámicas
PILA: Es una lista ordenada en la que el modo de acceso a sus elementos es de tipo Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. ![](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ_h3-0HylMQbZ7WVVOWXZPQssKta31R_YzbIhw_nVXeiIPsPFCgA)
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: se crea la pila vacía. (constructor)
- Tamaño: regresa el número de elementos de la pila. (size)
- Apilar: se añade un elemento a la pila.(push)
- Desapilar: se elimina el elemento frontal de la pila.(pop)
- Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)
- Vacía: devuelve cierto si la pila está vacía o falso en caso contrario (empty).
EXPRECIONES ARITMETICAS EN PILA
JERARQUIA DE OPERADORES:
Forma especial en la que se pueden expresar una expresión matemática en tres formas: Infija, Prefija y Posfija.
Prefija:
- Nos indica que el operador va antes de los operandos.
- No requiere de paréntesis para indicar el orden de precedencia de operadores ya que el es una operación.
- Se evalúa de izquierda a derecha hasta que encontrémosle primer operador seguido inmediatamente de un par de operandos.
- Se evalúa la expresión binaria y el resultado se cambia como un nuevo operando.
- Se repite este hasta que nos quede un solo resultado.
(2+(3*4)) = x
|
((2+3)*4) = x
|
= + 2 * 3 4 x
|
= * + 2 3 4 x
|
INFIJA
Estas notaciones se refiere a que el operador esta entre
los operandos.
- El orden es primer operando,operador, segundo operando
- La notación infija puede estar completamente parentizada o puede basarse en un esquema de precedencia de operadores así como el uso de paréntesis para invalidar los arreglos al expresar el orden de evaluación de una expresión:
3*4=12
3*4+2=14
3*(4+2)=18
(2+(3*4)) = x
|
((2+3)*4) = x
|
Notación infija |
2+3*4 = x
|
(2+3)*4 = x
|
POSFIJA
El operador ocupa la posición después de los operandos sus características principales son:
- El orden de los operandos se conserva igual que la expresión infija equivalente no utiliza paréntesis ya que no es una operación ambigua.
- La operación posfija no es exactamente lo inverso a la operación prefija equivalente:
(A+B)*C AB+C*
(2+(3*4)) = x
|
((2+3)*4) = x
|
Notación postfija |
2 3 4 * + x =
|
2 3 + 4 * x =
|
EJEMPLO JAVA PILA ESTATICA :
CLASE PILA
public class PILA {
public int dato;
public static int tope;
public static int op;
private int pila[]=new int[5];
INSERTAR
public void Insertar(){
if(tope==5){
System.err.println("Pila llena");
}
else{
System.out.println("Proporciona el dato para la pila");
System.out.println("Dato"+tope);
Scanner cap=new Scanner(System.in);
pila[tope]=cap.nextInt();
tope++;
}
}
IMPRIMIR
public void Imprimir(){
if(tope>=10){
for(int topem=tope-1;topem>=0;topem--){
System.out.println("\n\n"+pila[topem]);
}
} else
System.err.println("Pila Vacia no hay nada que mostrar");
}
ELIMINAR
public void elminar(){
if(tope<0){
System.err.println("pila vacia");
}else if(tope==10)
tope--;
tope--;
pila[tope]=0;
tope--;
}
else{
pila[tope]=0;
tope--;
}
Estructuras dinámicas
Las estructuras
dinámicas de datos son
estructuras que cuya dimensión puede crecer o disminuir
durante la ejecución del programa.
- Una estructura dinámica de datos es una colección de elementos llamados nodos.
- Una estructura dinámica de datos se amplía y contrae durante la ejecución del programa.
Se pueden
dividir en dos grandes grupos:
- Lineales: listas enlazadas, pilas, colas
- No lineales: árboles , grafos
Las estructuras dinámicas de datos son de gran utilidad para
almacenar datos del mundo real, que están cambiando
constantemente.
EJEMPLO REAL
Por ejemplo si tenemos almacenados en un array
los datos de los alumnos de un curso, los cuales estan ordenados
de acuerdo al promedio, para insertar un nuevo alumno seria
necesario correr cada elemento un espacio: Si en su lugar se
utilizara una estructura dinámica de datos, los nuevos
datos del alumno se pueden insertar fácilmente.
No hay comentarios.:
Publicar un comentario