Fecha: 24/10/2011
[size=18]Definición[/size]

La pila es una estructura de datos que permite almacenar datos en el orden LIFO (Last In First Out) en español, último en entrar, primero en salir).

La recuperación de los datos es hecha en el orden inverso de su inserción.



[size=18]Caracteristicas[/size]

Acceso limitado al ´ ultimo elemento insertado

Operaciones b´ asicas: apilar, desapilar y cima.

desapilar o cima en una pila vac´Ä±a es un error en el TDA pila.

Quedarse sin espacio al apilar es un error de implementaci´on.

Cada operaci ´on deber´Ä±a tardar una cantidad constante de tiempo

en ejecutarse.

Con independencia del n´umero de elementos apiladas.



Acontinuación les dejo el codigo de una pila que implementa dos operaciones simplemente "insertar" y "vaciar"



[size=18]codigo[/size]



/*Arturo Ulises Castañeda Estrada*/

#include

#include

#include

//using namespace std;



struct pila{

int arr[3];

int fila1;

};



/*Declaracion de la función apilar*/

void apilar(struct pila *);

/*Declaración de la función desapilar*/

int desapilar(struct pila *);

/*Declaración de la función eliminar*/



main(){

struct pila p;

p.fila1=-1;

int op=0;

do{

system("CLS";);

printf("1. PILA ESTATICA n";);

printf("1. Meter un elemento a la pila n";);

printf("2. Desapilarn";);

printf("3. Salirn";);

printf("elige una opcion: ";);

scanf("%d",&op);



switch(op){

case 1:

apilar(&p);

break;



case 2:

desapilar(&p);

break;



};

}

while(op!=3);

return 0;

}



/*Función apilar: Mete elementos a la pila*/

void apilar(struct pila *final1){

/*Precondición si la pila esta llena se debe desapilar los elementos para poder apilar otro*/

if(final1->fila1>=2 ){

printf("La pila ya esta llena debe vaciarla o eliminar para poder meter un elemento";);

}

/*Condición si la pila tiene al menos un espácio para apilar*/

else{

int elem=0;

printf("Introduce un elemento a la pila: ";);

scanf("%d",&elem);

final1->arr[++final1->fila1]=elem;



printf("Elemento insertado en la pila: %d n",elem);



}

getch();

}



/*Saca los elementos que hay en la pila*/

int desapilar(struct pila *final1){

/*Precondicio si la PILA esta vacia o no contiene ningun elemento*/

if(final1->fila1==-1){

printf("No hay elementos en la pila %d n",final1->fila1);

}



/*Si la pila tiene al menos un elemento lo imprime o saca los elementos de la pila para visualizarlos y los elimina deacuerdo a la logica de la pila*/

else{



while(final1->fila1!=-1){

printf("%d ",final1->arr[final1->fila1]);

final1->fila1--;

}



printf("nla fila1 esta vacia %d n",final1->fila1);

}

getch();

}



Espero que les halla servido de ayuda, proximamente subire un ejercicio con memoria dinamica



[size=18]PD: Si por alguna razón no les compila debido a que pone emoticones en ves de los signos les adjunto el archivo para que lo descarguen.[/size]




Link:



[size=18]Gracias...!!![/size]



[size=24]COMENTEN[/size]

id: fd4b3e50bd7f 4b751990b898 b0a1d568 911311193