lunes, 11 de julio de 2011

Puntos extra PILAS

Pilas:
Una pila es una estructura de datos a la cual se puede acceder solo por un extremo de la misma. Las operaciones de inserción y extracción se realizan a través del tope, por lo cual no se puede acceder a cualquier elemento de la pila. Se la suele llamar estructura L.I.F.O. como acrónimo de las palabras inglesas "last in, first out" (último en entrar, primero en salir). La pila se considera un grupo ordenado de elementos, teniendo en cuenta que el orden de los mismos depende del tiempo que lleven "dentro" de la estructura.
Las pilas son frecuentemente utilizadas en el desarrollo de sistemas informáticos y software en general. Por ejemplo, el sistema de soporte en tiempo de compilación y ejecución del Pascal utiliza una pila para llevar la cuenta de los parámetros de procedimientos y funciones, variables locales, globales y dinámicas. Este tipo de estructuras también son utilizadas para traducir expresiones aritméticas o cuando se quiere recordar una secuencia de acciones u objetos en el orden inverso del ocurrido.
 
#include <stdio.h>
#include <stdlib.h>
 
  /* declaracion */
struct tpila{
  int clave;
  struct tpila *sig;
};
   /* prototipos e implementacion */
 
void crear(struct tpila **pila);
int vacia(struct tpila *pila);
void apilar(struct tpila *pila, int elem);void desapilar(struct tpila *pila, int *elem);
 
 
void crear(struct tpila **pila)
{  *pila = (struct tpila *) malloc(sizeof(struct tpila));
  (*pila)->sig = NULL;
}
 
int vacia(struct tpila *pila){
  return (pila->sig == NULL);
}
 
void apilar(struct tpila *pila, int elem){
  struct tpila *nuevo;
 
  nuevo = (struct tpila *) malloc(sizeof(struct tpila));
  nuevo->clave = elem;  nuevo->sig = pila->sig;
  pila->sig = nuevo;
}
 
void desapilar(struct tpila *pila, int *elem){
  struct tpila *aux;
 
  aux = pila->sig;
  *elem = aux->clave;  pila->sig = aux->sig;
  free(aux);
}
 
   /* programa de prueba */
int main(void)
{
  struct tpila *pila;
  int elem; 
  crear(&pila);
  if (vacia(pila)) printf("nPila vacia!");
  apilar(pila, 1);
  desapilar(pila, &elem); 
  return 0;
}

2 comentarios:

  1. aqui les dejo este ejemplo el cual lo vi con la meastra Blanca Martinez Cavazos

    ResponderEliminar
  2. Ponle la referencia. O si no la tienes, significa que Blanca lo copió y lo copió mal: compara con http://www.algoritmia.net/articles.php?id=14 y busca los errores :/
    Te pongo +1 por el intento.

    ResponderEliminar