C/C++语言中的int类型能表示的整数范围是-2^31~2^31-1,unsigned int类型能表示的整数范围是0~2^32-1,
即0~4 294 967 295,所以,int和unsigned int类型都不能存储超过10位的整数。有些问题需要处理的整数远远不止10位,
这种大整数用C/C++语言的基本数据类型无法直接表示。请编写算法,采用顺序表或者单链表实现两个大整数相加运算。
提示:将用户输入的十进制整数字符串转化为顺序表或者带头结点的单链表,
每个数据元素或每个结点中存放一个整数位,然后总结按位相加的运算规律写出程序。
#include <stdio.h>
#include <malloc.h>
#include <math.h>
#include <string.h>
#define MaxSize 100
using namespace std;
typedef int ElemType;
//定义
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
//初始化
void InitList(LinkList &L)
{
L = (LNode *) malloc (sizeof (LNode));
L->next = NULL;
}
//创建
void CreatList_R (LinkList &L, char a[], int n)
{
LNode *r = L;
int i = 0;
while (i < n)
{
LNode *p = (LNode *) malloc (sizeof (LNode)); //创建新结点p
p->data = a[n - i - 1] -'0';
p->next = NULL;
r->next = p; //将新结点P插入到r结点之后
r = p;