Algoritmo pila dinamica en c

Solo disponible en BuenasTareas
  • Páginas : 2 (295 palabras )
  • Descarga(s) : 0
  • Publicado : 29 de marzo de 2011
Leer documento completo
Vista previa del texto
//ADMINISTRAR UNA PILA

#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);...
tracking img