Algoritmo pila dinamica en c
#include
#include
typedef int Elemento;
typedef struct sNodo Nodo;
typedef struct sPila Pila;
int Insertar(Pila *unapila,Nodo *unnodo);
int Eliminar(Pila*unapila,Nodo *unnodo);
void VaciarPila(Pila *unapila);
void VerPila(Pila *unapila,Nodo *unnodo);
struct sNodo
{
Elemento dato;
Nodo *siguiente;
};
struct sPila
{
Nodo *tope;int tam;
};
Pila *crearPila()
{
Pila *unapila;
unapila=malloc(sizeof(Pila));
if(unapila!=NULL)
{
unapila->tope=NULL;
unapila->tam=0;
}return(unapila);
}
Nodo *crearNodo(Elemento num)
{
Nodo *nodotemp;
nodotemp=malloc(sizeof(Nodo));
if(nodotemp!=NULL)
{
nodotemp->dato=num;
nodotemp->siguiente=NULL;}
return(nodotemp);
}
int Insertar(Pila *unapila,Nodo *unnodo)
{
unnodo->siguiente=unapila->tope;
unapila->tope=unnodo;
unapila->tam +=1;
return 1;
}
intEliminar(Pila *unapila,Nodo *unnodo)
{
unnodo = unapila->tope;
unapila->tope= unapila->tope->siguiente;
free (unnodo);
unapila->tam -=1;
return 1;
}
void VaciarPila(Pila*unapila)
{
Nodo *apnodo,*apnodo1;
if(unapila->tope!=NULL)
{
apnodo=unapila->tope;
while(apnodo !=NULL)
{
apnodo1=apnodo->siguiente;
free(apnodo);apnodo=apnodo1;
}
unapila->tope=NULL;
unapila->tam=0;
}
return;
}
void VerPila(Pila *unapila,Nodo *unnodo)
{
int i;
Nodo *aux;
aux=unapila->tope;for(i=0;itam;i++)
{
printf( "%d ",aux->dato);
aux=aux->siguiente;
}
if (unapila->tam==0)
{
printf( "La pila esta vacia!");
}
return;
}
int main()
{
char opc;
charsal;
Elemento num;
Pila *unapila;
Nodo *unnodo;
do
{
fflush(stdin);
printf("\n");
scanf("%c",&opc);
switch(opc)
{
case 'm': scanf("%d",&num);...
Regístrate para leer el documento completo.