• Feed RSS
Mostrando entradas con la etiqueta lenguaje c. Mostrar todas las entradas
Mostrando entradas con la etiqueta lenguaje c. Mostrar todas las entradas
0
Las pilas són un tipo especial de listas, conocidas como listas LIFO (Last In First Out). Los elementos se apilan, de modo que sólo el elemento que está encima de la pila puede ser leído, y sólo pueden añadirse elementos encima de la pila. Para poder acceder a los nodos inferiores, se deberá desapilar la pila hasta llegar al deseado.

El primer nodo de la pila se conoce como Top y como he comentado antes, los componentes de esta se llaman nodos. A continuación os dejo los códigos básicos para el trato de pilas en C.
/*
 * Programa: pilas.c
 * Autor:    Javier Angosto
 * Descr.:   Funciones básicas del tratamiento de pilas
*/

/** Definición de la estructura NodoPila **/
struct _NodoPila {
 int info; //Puede ser otro tipo de dato (String, float, long...)
 struct _NodoPila *sig; //Contiene la dirección de memoria del siguiente nodo
};

typedef struct _NodoPila * PilaDatos;

/** Devuelve 0 si está llena, y diferente de 0 si está vacia **/
int PilaVacia (PilaDatos p) {
 return (p==NULL);
}

/** Devuelve el top de la pila **/
//R. Entrada: La Pila no puede entrar vacia
int Cima (PilaDatos p){
 return (p->info); 
}

/** Devuelve una nueva pila con un elemento desapilado **/
void Desapilar (PilaDatos *p) {
 PilaDatos aux;
 if (! PilaVacia(*p)) {
  aux = *p;
  *p = (*p)->sig;
 }
}

/** Devuelve una nueva pila con un nuevo elemento **/
void Apilar (PilaDatos *p, int Elem){
 PilaDatos Nodo;
 Nodo=(PilaDatos)malloc(1*sizeof(PilaDatos));
 Nodo->info=Elem;
 Nodo->sig=*p;
 *p=Nodo;
}