|
发表于 2016-5-26 21:56:21
|
显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#define STACKSIZE 100
#define INIT_STACK_SIZE 10
typedef struct SqStack
{
char *base;
char *top;
int stacksize;
}SqStack;
void InitSqStack(SqStack *s)
{
s->base=(char*)malloc(STACKSIZE*sizeof(char));
if(!s->base)
exit(0);
s->top=s->base;
s->stacksize=STACKSIZE;
}
void Push(SqStack *s,char mychar)
{
if(s->top-s->base==s->stacksize)
{
s->base=(char*)realloc(s->base,(STACKSIZE+INIT_STACK_SIZE)*sizeof(char));
if(!s->base)
exit(0);
s->top=s->base+s->stacksize;
s->stacksize+=INIT_STACK_SIZE;
}
*(s->top++)=mychar;
}
void Pop(SqStack *s,char *ch)
{
if(s->top==s->base)
exit(0);
*ch=*(--s->top);
}
int EmptySqStack(SqStack *s)
{
if(s->top!=s->base)
return 1;
else
return 0;
}
int main()
{
char a_mychar,b_mychar,c_mychar;
char a_elem,b_elem,c_elem;
int temp=0;
SqStack a,b,c;
InitSqStack(&a);
InitSqStack(&b);
InitSqStack(&c);
scanf("%c",&a_mychar);
while(a_mychar!='#')
{
Push(&a,a_mychar);
scanf("%c",&a_mychar);
}
fflush(stdin);
scanf("%c",&b_mychar);
while(b_mychar!='#')
{
Push(&b,b_mychar);
scanf("%c",&b_mychar);
}
while(EmptySqStack(&a)&&EmptySqStack(&b))
{
Pop(&a,&a_elem);
Pop(&b,&b_elem);
c_mychar=((a_elem-'0')+(b_elem-'0')+temp)%10+'0';
temp=((a_elem-'0')+(b_elem-'0'+temp))/10;
Push(&c,c_mychar);
}
while(EmptySqStack(&a))
{
Pop(&a,&a_elem);
c_mychar=((a_elem-'0')+temp)%10+'0';
temp=((a_elem-'0')+temp)/10;
Push(&c,c_mychar);
}
while(EmptySqStack(&b))
{
Pop(&b,&b_elem);
c_mychar=((b_elem-'0')+temp)%10+'0';
temp=((b_elem-'0')+temp)/10;
Push(&c,c_mychar);
}
if(temp==1)
Push(&c,'1');
while(EmptySqStack(&c))
{
Pop(&c,&c_elem);
printf("%c",c_elem);
}
return 0;
}
自己实现的代码,希望大家多多交流,欢迎指正 |
|