/**
* 整数加法
*
* @param lv
* 左值
* @param rv
* 右值
* @param result
* 相加的结果
* @数值存放说明 数值的每一位作为栈的一项存放在栈中,从栈底到栈顶依次是数值的高位到低位
* @算法描述 输入的加数倒序存放在栈中(即栈顶是数的最低位,栈底是数的最高位)。 计算的时候,依次弹出栈中的数据,对每一位执行加操作。
* 若遇到进位,则将进位标志carry设置为1,以在进行下一位计算的时候将其加上。 进位加结束后,将carry的值重置为0。
* 每次计算都会检查进位标志carry的值
*/
void plus(Stacklv, Stackrv, Stackresult) {
int sum = 0;
// 进位标志
int carry = 0;
while (true) {
try {
// 两个加数的长度都还不为0,继续分别在两个栈中取出一位相加
if (!lv.empty() && !rv.empty()) {
// 两个加数取出一位值相加,再加上进位(因为在有进位时carry=1,无进位时carry=0,根据任何数与0相加都等于0,所以可以直接加上)
sum = lv.pop() + rv.pop() + carry;
// 进位标志使用后,重置为0
carry = 0;
// 根据当前加数的和再加上进位的结果是否大于9(即10甚至更大,因为每一位加数的最大值只可能是9,所以这里最大也只能是18)</