miércoles, 15 de junio de 2016

Operaciones en PILAS

  1. En la pila S, insertar un elemento e: push(S,e).
  2. Retirar un elemento de la pila S: pop(S).
  3. Verificar si la pila S está vacía: stackempty(S).
  4. Saber cuál es el elemento en la cima de la pila S: stacktop(S)

La Operación PUSH

Esta operación sirve para insertar un elemento e en la pila S, lo vamos a escribir como: push(S,e)

Después de hacer esta operación sucede que: El elemento en la cima de la pila S ahora es e.




(1) La operación push recibe: la dirección de una estructura pila y un elemento entero. 

(2) Incrementa el tope (cima) de la pila para agregar el elemento en una posición libre de la pila. 

(3) Asignando el valor e en la casilla S->top. 





La Operación POP

Esta operación sirve para retirar el elemento en la cima de la pila S, lo vamos a escribir como: pop(S,e).




(1) La función devuelve un tipo entero al recibir la dirección de una variable de tipo estructura pila (struct stack *). Las líneas (4) y (5) son las más importantes ya que se almacena el valor que ser devuelto y se decrementa el tope de la pila.





La Operación STACKTOP

Esta función debe devolver un número entero y dejar la pila sin cambio. 

Para esto: 
  • pop(&A). 
  • Mostrar el elemento A.
  • push(&A,elemento).



El siguiente segmento de código ilustra cómo se han usado las funciones antes creadas para implementar Stacktop, por supuesto que se pueden separar y crear una nueva función que haga lo mismo: 




La Operación Stackempty 

La operación stackempty se describe en el siguiente segmento de código:




Implementación de las PILAS

Una pila está conformada por dos elementos: 

  • Un espacio suficiente para almacenar los elementos insertados en la pila. 
  • Una elemento que indique cuál es el elemento en la cima de la pila. 
La estructura Pila:

         definir nuevo tipo estructura llamado "stack" con item: 

         un arreglo de 0 a máximos elementos enteros
         top: un número de -1 a (máximos – 1) 

         fin de la nueva estructura 

Es posible escribir un código en C/C++ que represente lo anteriormente propuesto.


 


Implementación con ARREGLOS

  • Una pila es una colección ordenada de objetos.
  • En C, los arreglos permiten almacenar colecciones ordenadas. 
  • La desventaja de implementar una pila mediante un arreglo es que esta última es de tamaño fijo, mientras que usando punteros la pila puede ser de tamaño dinámico.

 

 

Aplicaciones de las PILAS

Aplicaciones de las PILAS

  • Navegador WEB
Se almacenan los sitios previamente visitados.
Cuando el usuario quiere regresar (presione el botón de retroceso), simplemente se extrae la última dirección (pop) de la pila de sitios visitados. 

  • Editores de TEXTO
- Los cambios efectuados se almacenan en una pila.
- Usualmente implementada como arreglo.
- Usuario puede deshacer los cambios mediante la operación undo, la cual extraer el estado del texto antes del último cambio realizado.


La Estructura de Datos PILA

  • Su nombre se deriva de la metáfora de una pila de platos en una cocina. 
  • La inserción y extracción de elementos de la pila siguen el principio LIFO (last-in-first-out). 
  • El último elemento en entrar es el único accesible en cada momento. Entra Sale Tope.


Pila (Stack)

Una pila (stack) es una colección ordenada de elementos en la cual los datos se insertan o se retiran por el mismo extremo llamado "parte superior" de la pila.


Operaciones Básicas en Pilas: 

PUSH


Existe solamente un lugar en donde cualquier elemento puede ser agregado a la pila. Después de haber insertado el nuevo elemento, G ahora es el elemento en la cima.

POP 


Basta indicar que sea retirado un elemento. No podemos decir retirar C, porque C no está en la cima de la pila. 

EJEMPLO:



La dinámica de la pila, es decir, la manera en cómo entran y salen los datos a la estructura de datos se denomina lifo (last input, first output).

Las Pilas

Las pilas son estructuras de datos que tienes dos operaciones básicas: push (para insertar un elemento) y pop (para extraer un elemento). Su característica fundamental es que al extraer se obtiene siempre el último elemento que acaba de insertarse. Por esta razón también se conocen como estructuras de datos LIFO (del inglés Last In First Out). Una posible implementación mediante listas enlazadas sería insertando y extrayendo siempre por el principio de la lista. Gracias a las pilas es posible el uso de la recursividad (lo veremos en detalle en el tema siguiente). La variable que llama al mismo procedimiento en el q está, habrá que guardarla así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacandolas, esto es posible a la implementación de pilas. Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. 

Por ejemplo, la gestión de ventanas en Windows (cuando cerramos una ventana siempre recuperamos la que teníamos detrás). Otro ejemplo es la evaluación general de cualquier expresión matemática para evitar tener que calcular el número de variables temporales que hacen falta, demostrado a continuación: 





sábado, 4 de junio de 2016

Estructura de Datos:

Estructura de Datos:

Una estructura de datos, es una forma particular de organizar datos en una computadora para que pueda ser utilizado de manera eficiente.

En programación, una estructura de datos puede ser declarada inicialmente escribiendo una palabra reservada, luego un identificador para la estructura y un nombre para cada uno de sus miembros, sin olvidar los tipos de datos que estos representan. Generalmente, cada miembro se separa con algún tipo de operador, carácter o palabra reservada.

En el lenguaje de programación Pauscal*, es posible crear una estructura de datos de la forma mencionada. La sintaxis básica es:

Estruct Identificador, _
              Miembro1:TipoDeDato, _
              Miembro2:TipoDeDato, _
              ... 
              Miembro9:TipoDeDato

Para acceder a los miembros de una estructura, primero se debe crear una referencia a esta, generalmente con una variable de tipo; luego se pueden editar y obtener los datos de los miembros libremente.



Estruc Estructura,Miembro1:Entero,Miembro2:Cadena,Miembro3:Byte
 Var Variable:Estructura
 Variable.Miembro1 = 40000
 Variable.Miembro2 = "Hola Mundo"
 Variable.Miembro3 = 255
 Mensaje(Variable.Miembro2) ' Muestra "Hola Mundo"


*Pauscal es un lenguaje de programación para Microsoft Windows de 32 bits desarrollado por Paul Guerra. La característica particular de este lenguaje de programación es que su sintaxis está basada en el idioma español. Este lenguaje es potente y no se limita a fines educativos.