#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
typedef struct nodo {
int num;
struct nodo *sig;
}tiponodo;
typedef tiponodo *pila;
pila apilar (pila p,int e); //almacena el elemento e en la pila
pila desapilar (pila p); //elimina el ultimo elemento introducido en la pila p
int cima (pila p); //devuelve el ultimo elemento introducido en la pila p
pila pnula (void); //construye una pila p sin elementos
int nula (pila p); //decide si la pila p tiene elementos*/
main () {
int a,b,num,llevada;
pila pa,pb,aux;
int suma;
char respa,respb;
pa = pnula();
pb = pnula();
aux = pnula();
respa='a';
respb='a';
llevada = 0;
printf("Paso al programa de los numeros que se quieren sumarn");
while (respa != 'n') {
printf("Introduce el numero a: ");
scanf("%d",&a);
apilar(pa,a);
printf("Deseas continuar metiendo elementos en la pila a (introduce n si no quires continuar)n: ");
/*setbuf(stdin,NULL);*/
scanf("%c",&respa);
}
while (respb != 'n') {
printf("Introduce el numero b: ");
scanf("%d",&b);
apilar(pb,b);
printf("Deseas continuar metiendo elementos en la pila b (introduce n si no quires continuar): n");
/*setbuf(stdin,NULL);*/
scanf("%c",&respb);
}
while ((nula(pa) != 1) && (nula(pb) != 1 )) {
printf("entro en el primer bucle");
a = cima(pa);
b = cima(pb);
desapilar(pa);
desapilar(pb);
suma = a + b + llevada;
llevada = 0;
if (suma>9)
llevada = 1;
apilar(aux,suma);
printf("salgo del primer bucle");
}
while (nula(aux) != 1) {
printf("entro en el segundo bucle");
num = cima(aux);
desapilar(aux);
printf("El numero resultantes es el siguiente");
printf("%d",num);
printf("salgo del segundo bucle");
}
}
pila pnula (void) {
return(NULL);
}
pila desapilar (pila p) {
pila q;
q = (pila) malloc (sizeof(tiponodo));
q = p;
p = p->sig;
free(q);
return(p);
}
pila apilar (pila p,int e) {
pila q;
q = (pila) malloc (sizeof(tiponodo));
q->num = e;
q->sig = p;
p = q;
return(p);
}
int cima (pila p) {
int e;
if (nula(p) == 1)
printf("La pila esta vacian");
else
e = p->num;
return(e);
}
int nula (pila p) {
int resultado;
printf("he entrado en el buclen");
if (p==NULL) {
resultado = 1;
printf("La pila esta vacian");
}
else {
resultado = 0;
printf("La pila no esta vacian");
}
return(resultado);
}