数据结构大数四则运算线性表代码
时间: 2023-07-03 15:33:36 浏览: 109
以下是使用线性表进行大数加法的示例代码,其他运算类似:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int BASE = 10; // 基数
typedef vector<int> BigInt; // 大数类型
// 去除高位多余的0
void Trim(BigInt& a) {
while (a.size() > 1 && a.back() == 0) {
a.pop_back();
}
}
// 大数加法
BigInt Add(const BigInt& a, const BigInt& b) {
BigInt c;
int carry = 0;
for (int i = 0; i < a.size() || i < b.size() || carry; i++) {
int sum = carry;
if (i < a.size()) sum += a[i];
if (i < b.size()) sum += b[i];
c.push_back(sum % BASE);
carry = sum / BASE;
}
return c;
}
int main() {
string s1, s2;
cin >> s1 >> s2;
// 将字符串转换为大数
BigInt a, b;
for (int i = s1.size() - 1; i >= 0; i--) {
a.push_back(s1[i] - '0');
}
for (int i = s2.size() - 1; i >= 0; i--) {
b.push_back(s2[i] - '0');
}
// 大数加法
BigInt c = Add(a, b);
// 输出结果
for (int i = c.size() - 1; i >= 0; i--) {
cout << c[i];
}
cout << endl;
return 0;
}
```
需要注意的是,上述代码中使用了vector来存储大数,这是因为使用数组存储时需要预设长度,而大数的长度不确定,因此使用vector更为方便。同时也需要注意进位、借位、补零等情况,具体实现时需要仔细思考和处理。
阅读全文