字符链栈实现大整数加法 有有关问题请问

字符链栈实现大整数加法 有问题请教
#include <iostream>
using namespace std;


typedef char SElemType;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define  MAXSIZE 1000
#define  TRUE 3
#define  FALSE -3


typedef  struct StackNode {     //链栈定义
      SElemType  data;
      struct StackNode *next;
 } StackNode,  *LinkStack;
LinkStack S;   


Status InitStack(LinkStack &S )   //链栈初始化
{
S=NULL;
return OK;
}


Status StackEmpty(LinkStack S)  //判断是否为空
{   
   if (S==NULL) return TRUE;   
   else return FALSE;
}


Status Push(LinkStack &S , SElemType e) //进栈
{  
   StackNode *p;
   p=new StackNode;         
   if(!p) exit(OVERFLOW);  
   p->data=e; 
   p->next=S; 
   S=p; 
   return OK; 
}


Status Pop (LinkStack &S,SElemType &e)  //出栈
{   
StackNode *p;
if (S==NULL) return ERROR;
    e=S->data;  
p=S;   
S=S->next;
    delete p;   
return OK;  
}  

SElemType GetTop(LinkStack S)          //取栈顶元素
   {
       if (S==NULL) exit(ERROR);  
   else  return S->data;
    }


Status getall(LinkStack S)           //输出所有元素
{   
char a;
if (S==NULL) exit(ERROR);
while(S!=NULL)
{   a=GetTop(S);
cout<<a;
S=S->next;
}
cout<<endl;
return OK;
}

Status add(LinkStack i,LinkStack j,LinkStack &k)   //相加
{   
char a,b,c;
int d,e;
e=0;
d=0;


    while(i!=NULL||j!=NULL)
{   
if(i!=NULL) 
{   a=GetTop(i);
    i=i->next;
}
else a='0';
    

if(j!=NULL) 
{   b=GetTop(j);
    j=j->next;
}
else b='0';

        
if(d==0) e=(a-48)+(b-48);
else  e=(a-48)+(b-48)+1;


if(e>=10)
{   d=1;
    e=e-10;
c=e+48;
Push(k,c);
}
else
{   d=0;
    c=e+48;
Push(k,c);
}


}

return OK;
}

void creat(LinkStack &l)
{   char a;
    cout<<"请输入数据:";
while((a=getchar())!='\r')
{   Push(l,a);
}
cout<<endl;
cout<<"************入栈成功***********"<<endl;
}
    



int main()
{
    LinkStack L,J,K;




cout<<"*****************大整数加法***************"<<endl<<endl<<endl;
    cout<<"*****************1.输入被加数***************"<<endl;
cout<<"*****************2.输入加数*****************"<<endl;
cout<<"*****************3.相加*********************"<<endl;
cout<<"*****************4.输出相加结果*************"<<endl;
cout<<"*****************输入除1-4外的数字退出******"<<endl;
   
int choose=-1;
    while(choose!=0)
{ cout<<"请选择:";
cin>>choose;
switch(choose)
{
case 1:
     
  
  InitStack(L);
  creat(L);
  break;


case 2:
     
  
  InitStack(J);
  creat(J);
  break;

case 3:
      
      InitStack(K);
      cout<<"******************两数相加**********************"<<endl;
                  if(add(L,J,K))
  cout<<"******************两数相加成功******************"<<endl;


  break;
case 4:
      cout<<"******************输出**************************"<<endl;
  getall(K);
  break;
default:choose=0;
}
}   
   return 1;
}
------解决思路----------------------
你先把输入改了,cin和getchar不要混用,C++流和C输入输出不要混用。否则可能会出现问题。