题目:
用链表实现大整数加减法操作:
32位机器直接操作的数据最大为32个bit,若超过32bit,则需要单独设计算法。在这里,可以用链表每个结点存储大整数的每一位的十进制数字,则可以进行大整数的算数运算,该实验仅实现加减法操作。
要求:
- 随机产生2个1~50位的数字串,并存储到2个链表中。
- 进行加法或减法操作,结果存储到新的链表中。
- 打印运算结果。
目录
BigInteger.h
#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node* next;
};
class LinkList {
public:
Node* front;
int length = 0;//链表长度
LinkList();//初始化
~LinkList();//释放内存
void Insert(int);//插入数据
void GetList();//调试用
void PrintList();//打印
int GetRear();//得到尾节点数据
};
BigInteger.cpp
#include "BigInteger.h"
//初始化链表
LinkList::LinkList() {
front = new Node;
front->next = NULL;
}
//释放动态内存
LinkList::~LinkList() {
Node* p = front;
while (p) {
front = p;
p = p->next;
delete front;
}
}
//头插法在链表插入数据
void LinkList::Insert(int x) {
Node* s = new Node;
s->data = x;
s->next = front->next;
front->next = s;
length++;
}
//调试用函数(手动输入数据)
void LinkList::Get