单链表实现大整数相加

本文详细介绍了如何使用单链表来实现大整数的相加操作。通过将大整数转化为链表结构,逐一进行节点间的加法运算,最后处理进位问题。这种解决方案有效地解决了内存管理和大数运算的效率问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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;                                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值