长整数加减法运算

长整数加减法运算

【问题描述】

设计一个实现任意长的整数进行加法和减法运算的演示程序。
【基本要求】

利用双向循环链表实现长整数的存储,每个结点含一个整型变量。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。

【测试数据】

(1)0;0;应输出“0”。

(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”。

(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”

(4)1,0001,0001;-1,0001,0001;应输出“0”。

(5)1,0001,0001;-1,0001,0000;应输出“1”。

(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”。

(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。

【实现提示】

(1)可以在每个结点中仅存十进制的4位,即不超过9999的非负整数。

(2)可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。不能给长整数位数规定上限。

结点定义

template<class T>
struct LinkNode
{
	T data;
	LinkNode<T>* Leftlink;
	LinkNode<T>* Rightlink;
	LinkNode()
	{
		data = 0;
		Leftlink = NULL;
		Rightlink = NULL;
	}
	LinkNode(T x)
	{
		data = x;
		Leftlink = NULL;
		Rightlink = NULL;
	}
};

双向循环链表函数定义

template<class T>
class CircLinkList
{
public:
	CircLinkList();//构造函数
	CircLinkList(T x);//含参构造函数
	~CircLinkList();//析构函数
	bool Insert(T x);//插入结点
	LinkNode<T>* Get_head();//取头结点
	void Make_Empty();//清空链表
private:
	LinkNode<T>* head;
};

构造函数

template<class T>
CircLinkList<T>::CircLinkList()
{
	head = new LinkNode<T>;
	head->Leftlink = head;
	head->Rightlink = head;
}

template<class T>
CircLinkList<T>::CircLinkList(T x)
{
	head = new LinkNode<T>(x);
	head->Leftlink = head;
	head->Rightlink = head;
}

析构函数

template<class T>
CircLinkList<T>::~CircLinkList()
{
	Make_Empty();
}

插入结点

template<class T>
bool CircLinkList<T>::Insert(T x)
{
	LinkNode<T>* newnode, * current = head;
	newnode = new LinkNode<T>(x);
	if (newnode == NULL)
	{
		cout << "内存不足" << endl;
		return false;
	}
	while (1)
	{
		if (current->Rightlink == head)
		{
			newnode->Rightlink = current->Rightlink;
			current->Rightlink = newnode;
			newnode->Leftlink = current;
			current = current->Rightlink;
			current->Rightlink->Leftlink = newnode;
			break;
		}
		current = current->Rightlink;
	}
	return true;
}

取头结点

template<class T>
LinkNode<T>* CircLinkList<T>::Get_head()
{
	return head;
}

清空链表

template<class T>
void CircLinkList<T>::Make_Empty()
{
	LinkNode<T>* current = head->Rightlink, * p = NULL;
	while (current != head)
	{
		p = current;
		current = current->Rightlink;
		delete p;
		p = NULL;
	}
	current = NULL;
	delete head;
	head = NULL;
}

自定义函数

void Input(string& a,string& b);//输入函数
bool Check_Input(const string& t);//检查输入是否合法
void Calctor(string a, string b);//加减法计算器
void Check_count(int& n, string a);//头结点数据域赋值
void All_int_IN(string a, CircLinkList<int>& t);//长整数插入链表
void Add_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead);//加法运算
void Sub_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead);//减法运算
void Output(LinkNode<int>* t);//输出函数
void Delete_result(LinkNode<int>* t);//删除运算结果

输入函数

void Input(string& a, string& b)
{
	cout << "来自UJN_Zgq的长整数加减法计算器" << endl;
	cout << "请输入第一个长整数:(合法输入格式:1,0001,0001)" << endl;
    L1:	cin >> a;
	if (!Check_Input(a))
	{
		a = "";
		cout << "输入非法!!!" << endl;
		cout << "请重新输入第一个长整数:(合法输入格式:1,0001,0001)" << endl;
		goto L1;
	}
	cout << "请输入第二个长整数:(合法输入格式:1,0001,0001)" << endl;
	L2:	cin >> b;
	if (!Check_Input(b))
	{
		b = "";
		cout << "输入非法!!!" << endl;
		cout << "请重新输入第二个长整数:(合法输入格式:1,0001,0001)" << endl;
		goto L2;
	}
}

检查输入合法

bool Check_Input(const string& t)
{
	int len = t.length();
	char flag = ',';
	int p = 0;
	int i = 0;
	if (t[0] == '-')
		i = 1;
	while (p != -1 || i < len)
	{
		int num = 0;
		p = t.find(flag, i);
		if (p == -1)
		{
			num = stoi(t.substr(i, len - i));
			if (num < 0 || num>9999)
				return false;
			i = len;
		}
		else
		{
			num = stoi(t.substr(i, p - i));
			if (num < 0 || num>9999)
				return false;
			i = p + 1;
		}
	}
	return true;
}

加减法计算器

void Calctor(string a, string b)
{
	int coount1 = 0, count2 = 0, left = 0, right = 0;
	Check_count(coount1, a);
	Check_count(count2, b);
	CircLinkList<int> Left_num(coount1), Right_num(count2);
	LinkNode<int>* Left_head = NULL, *Right_head = NULL;
	Left_head = Left_num.Get_head();
	Right_head = Right_num.Get_head();
	All_int_IN(a,Left_num);
	All_int_IN(b, Right_num);
	cout << "加法结果输出:" << endl;
	Add_int(Left_head, Right_head);
	cout << "减法结果输出:" << endl;
	Right_head->data = -Right_head->data;
	Sub_int(Left_head, Right_head);
	Right_head->data = -Right_head->data;
}

头结点数据域赋值

void Check_count(int& n, string a)
{
	int len = a.length();
	for (int i = 0; i < len; i++)
	{
		if (isdigit(a[i]))
		{
			n++;
		}
	}
	if (a[0] == '-')
		n = -n;
}

长整数插入链表

void All_int_IN(string a, CircLinkList<int>& t)
{
	int len = a.length();
	char flag = ',';
	int p = 0;
	int i = 0;
	while (p != -1 || i < len)
	{
		int num = 0;
		p = a.find(flag, i);
		if (p == -1)
		{
			num = stoi(a.substr(i, len-i));
			if (num < 0)
				num = -num;
			t.Insert(num);
			i = len;
		}
		else
		{
			num = stoi(a.substr(i, p-i));
			if (num < 0)
				num = -num;
			t.Insert(num);
			i = p + 1;
		}
	}
}

加法运算

void Add_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead)
{
	int num = 0;
	LinkNode<int>* result=NULL;
	result = new LinkNode<int>;
	if (result == NULL)
		return;
	LinkNode<int>* Left = Lhead, * Right = Rhead;
	if (Left->data > 0 && Right->data > 0 || Left->data < 0 && Right->data < 0)
	{
		int flag = 0;
		if (Left->data > 0)
		{
			result->data = 1;
		}
		else
		{
			result->data = -1;
		}
		Left = Left->Leftlink;
		Right = Right->Leftlink;
		while (Left != Lhead || Right != Rhead || flag == 1)
		{
			LinkNode<int>* newnode;
			if (Right == Rhead || Left == Lhead)
			{
				if (Left == Lhead && Right == Rhead)
							num = 0 + 0 + flag;
				else
				{
					if (Right == Rhead)
						num = Left->data + 0 + flag;
					else
					{
						if (Left == Lhead)
						num = 0 + flag + Right->data;
					}
				}
			}
			else
			{
				num = Left->data + Right->data + flag;
			}
			flag = 0;
			if (num > 9999)
			{
				num -= 10000;
				flag = 1;
			}
			if (Left != Lhead)
				Left = Left->Leftlink;
			if (Right != Rhead)
				Right = Right->Leftlink;
			newnode = new LinkNode<int>(num);
			newnode->Rightlink = result->Rightlink;
			result->Rightlink = newnode;
		}
		Output(result);
		Delete_result(result);
	}
	else
	{
		Sub_int(Lhead, Rhead);
	}
}

减法运算

void Sub_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead)
{
	LinkNode<int>* Left = Lhead, * Right = Rhead;
	LinkNode<int>* result = NULL;
	result = new LinkNode<int>;
	if (result == NULL)
		return;
	if (Left->data > 0 && Right->data < 0 || Left->data < 0 && Right->data > 0)
	{
		int flag = 0;
		if (abs(Left->data) > abs(Right->data))
		{
			if (Left->data < 0)
				result->data = -1;
			else
				result->data = 1;
			Left = Left->Leftlink;
			Right = Right->Leftlink;
			while (Left != Lhead)
			{
				LinkNode<int>* newnode = NULL;
				int num = 0;
				if (Right != Rhead)
					num = Left->data - Right->data - flag;
				else
					num = Left->data - 0 - flag;
				flag = 0;
				if (num < 0)
				{
					flag = 1;
					num += 10000;
				}
				if (Right != Rhead)
					Right = Right->Leftlink;
				Left = Left->Leftlink;
				newnode = new LinkNode<int>(num);
				newnode->Rightlink = result->Rightlink;
				result->Rightlink = newnode;
			}
		}
		else
		{
			if (abs(Left->data) < abs(Right->data))
			{
				if (Right->data < 0)
					result->data = -1;
				else
					result->data = 1;
				Left = Left->Leftlink;
				Right = Right->Leftlink;
				while (Right != Rhead )
				{
					LinkNode<int>* newnode = NULL;
					int num = 0;
					if (Left != Lhead)
						num = Right->data - Left->data - flag;
					else
						num = Right->data - 0 - flag;
					flag = 0;
					if (num < 0)
					{
						flag = 1;
						num += 10000;
					}
					if (Left != Lhead)
						Left = Left->Leftlink;
					Right = Right->Leftlink;
					newnode = new LinkNode<int>(num);
					newnode->Rightlink = result->Rightlink;
					result->Rightlink = newnode;
				}
			}
			else
			{
				if (Left->data < 0)
				{
					int flag = 0;
					Left = Left->Leftlink;
					Right = Right->Leftlink;
					while (Left != Lhead && Right != Rhead)
					{
						LinkNode<int>* newnode = NULL;
						int num = 0;
						num = Right->data - Left->data - flag;
						if (num < 0)
						{
							if (Right->Leftlink != Rhead)
							{
								flag = 1;
								num += 10000;
							}
						}
						if (Right != Rhead)
							Right = Right->Leftlink;
						if (Left != Lhead)
							Left = Left->Leftlink;
						if (Right == Rhead && Left == Lhead)
						{
							if (num < 0)
								result->data = -1;
							else
								result->data = 1;
						}
						newnode = new LinkNode<int>(num);
						newnode->Rightlink = result->Rightlink;
						result->Rightlink = newnode;
					}
				}
				else
				{
					int flag = 0;
					Left = Left->Leftlink;
					Right = Right->Leftlink;
					while (Left != Lhead && Right != Rhead)
					{
						LinkNode<int>* newnode = NULL;
						int num = 0;
						num = Left->data - Right->data - flag;
						if (num < 0)
						{
							if (Left->Leftlink != Lhead)
							{
								flag = 1;
								num += 10000;
							}
						}
						if (Right != Rhead)
							Right = Right->Leftlink;
						if (Left != Lhead)
							Left = Left->Leftlink;
						if (Right == Rhead && Left == Lhead)
						{
							if (num < 0)
								result->data = -1;
							else
								result->data = 1;
						}
						newnode = new LinkNode<int>(num);
						newnode->Rightlink = result->Rightlink;
						result->Rightlink = newnode;
					}
				}
			}
		}
		Output(result);
		Delete_result(result);
	}
	else
	{
		Add_int(Lhead, Rhead);
	}
}

输出函数

void Output(LinkNode<int>* t)
{
	int temp = 0;
	LinkNode<int>* current = t->Rightlink;
	while (current != NULL)
	{
		if (current->data == 0)
		{
			if (current->Rightlink == NULL)
				cout << current->data;
		}
		else
		{
			break;
		} 
		current = current->Rightlink;
	}
	if (current != NULL)
	{
		if (t->data < 0)
			cout << '-';
	}
	int flag = 1;
	while(current != NULL)
	{
		temp = current->data;
		if (flag == 0)
		{
			cout << temp / 1000 << temp / 100 % 10 << temp / 10 % 10 << temp % 10;
			flag = 0;
		}
		else
		{
			cout << current->data;
			flag = 0;
		}
		current = current->Rightlink;
		if (current != NULL)
			cout << ',';
	}
	cout << endl;
}

删除运算结果

void Delete_result(LinkNode<int>* t)
{
	LinkNode<int>* current = t;
	while (t != NULL)
	{
		t = t->Rightlink;
		delete current;
		current = t;
	}
}

主函数

int main()
{
	string a, b;
	Input(a, b);
	Calctor(a, b);
	return 0;
}

完整代码

#include<iostream>
#include<string>

using namespace std;

template<class T>
struct LinkNode
{
	T data;
	LinkNode<T>* Leftlink;
	LinkNode<T>* Rightlink;
	LinkNode()
	{
		data = 0;
		Leftlink = NULL;
		Rightlink = NULL;
	}
	LinkNode(T x)
	{
		data = x;
		Leftlink = NULL;
		Rightlink = NULL;
	}
};

template<class T>
class CircLinkList
{
public:
	CircLinkList();//构造函数
	CircLinkList(T x);//含参构造函数
	~CircLinkList();//析构函数
	bool Insert(T x);//插入结点
	LinkNode<T>* Get_head();//取头结点
	void Make_Empty();//清空链表
private:
	LinkNode<T>* head;
};

template<class T>
CircLinkList<T>::CircLinkList()
{
	head = new LinkNode<T>;
	head->Leftlink = head;
	head->Rightlink = head;
}

template<class T>
CircLinkList<T>::CircLinkList(T x)
{
	head = new LinkNode<T>(x);
	head->Leftlink = head;
	head->Rightlink = head;
}

template<class T>
CircLinkList<T>::~CircLinkList()
{
	Make_Empty();
}

template<class T>
bool CircLinkList<T>::Insert(T x)
{
	LinkNode<T>* newnode, * current = head;
	newnode = new LinkNode<T>(x);
	if (newnode == NULL)
	{
		cout << "内存不足" << endl;
		return false;
	}
	while (1)
	{
		if (current->Rightlink == head)
		{
			newnode->Rightlink = current->Rightlink;
			current->Rightlink = newnode;
			newnode->Leftlink = current;
			current = current->Rightlink;
			current->Rightlink->Leftlink = newnode;
			break;
		}
		current = current->Rightlink;
	}
	return true;
}

template<class T>
LinkNode<T>* CircLinkList<T>::Get_head()
{
	return head;
}

template<class T>
void CircLinkList<T>::Make_Empty()
{
	LinkNode<T>* current = head->Rightlink, * p = NULL;
	while (current != head)
	{
		p = current;
		current = current->Rightlink;
		delete p;
		p = NULL;
	}
	current = NULL;
	delete head;
	head = NULL;
}

void Input(string& a,string& b);//输入函数
bool Check_Input(const string& t);//检查输入是否合法
void Calctor(string a, string b);//加减法计算器
void Check_count(int& n, string a);//头结点数据域赋值
void All_int_IN(string a, CircLinkList<int>& t);//长整数插入链表
void Add_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead);//加法运算
void Sub_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead);//减法运算
void Output(LinkNode<int>* t);//输出函数
void Delete_result(LinkNode<int>* t);//删除运算结果

void All_int_IN(string a, CircLinkList<int>& t)
{
	int len = a.length();
	char flag = ',';
	int p = 0;
	int i = 0;
	while (p != -1 || i < len)
	{
		int num = 0;
		p = a.find(flag, i);
		if (p == -1)
		{
			num = stoi(a.substr(i, len-i));
			if (num < 0)
				num = -num;
			t.Insert(num);
			i = len;
		}
		else
		{
			num = stoi(a.substr(i, p-i));
			if (num < 0)
				num = -num;
			t.Insert(num);
			i = p + 1;
		}
	}
}

void Check_count(int& n, string a)
{
	int len = a.length();
	for (int i = 0; i < len; i++)
	{
		if (isdigit(a[i]))
		{
			n++;
		}
	}
	if (a[0] == '-')
		n = -n;
}

bool Check_Input(const string& t)
{
	int len = t.length();
	char flag = ',';
	int p = 0;
	int i = 0;
	if (t[0] == '-')
		i = 1;
	while (p != -1 || i < len)
	{
		int num = 0;
		p = t.find(flag, i);
		if (p == -1)
		{
			num = stoi(t.substr(i, len - i));
			if (num < 0 || num>9999)
				return false;
			i = len;
		}
		else
		{
			num = stoi(t.substr(i, p - i));
			if (num < 0 || num>9999)
				return false;
			i = p + 1;
		}
	}
	return true;
}

void Output(LinkNode<int>* t)
{
	int temp = 0;
	LinkNode<int>* current = t->Rightlink;
	while (current != NULL)
	{
		if (current->data == 0)
		{
			if (current->Rightlink == NULL)
				cout << current->data;
		}
		else
		{
			break;
		} 
		current = current->Rightlink;
	}
	if (current != NULL)
	{
		if (t->data < 0)
			cout << '-';
	}
	int flag = 1;
	while(current != NULL)
	{
		temp = current->data;
		if (flag == 0)
		{
			cout << temp / 1000 << temp / 100 % 10 << temp / 10 % 10 << temp % 10;
			flag = 0;
		}
		else
		{
			cout << current->data;
			flag = 0;
		}
		current = current->Rightlink;
		if (current != NULL)
			cout << ',';
	}
	cout << endl;
}

void Input(string& a, string& b)
{
	cout << "来自UJN_Zgq的长整数加减法计算器" << endl;
	cout << "请输入第一个长整数:(合法输入格式:1,0001,0001)" << endl;
    L1:	cin >> a;
	if (!Check_Input(a))
	{
		a = "";
		cout << "输入非法!!!" << endl;
		cout << "请重新输入第一个长整数:(合法输入格式:1,0001,0001)" << endl;
		goto L1;
	}
	cout << "请输入第二个长整数:(合法输入格式:1,0001,0001)" << endl;
	L2:	cin >> b;
	if (!Check_Input(b))
	{
		b = "";
		cout << "输入非法!!!" << endl;
		cout << "请重新输入第二个长整数:(合法输入格式:1,0001,0001)" << endl;
		goto L2;
	}
}

void Add_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead)
{
	int num = 0;
	LinkNode<int>* result=NULL;
	result = new LinkNode<int>;
	if (result == NULL)
		return;
	LinkNode<int>* Left = Lhead, * Right = Rhead;
	if (Left->data > 0 && Right->data > 0 || Left->data < 0 && Right->data < 0)
	{
		int flag = 0;
		if (Left->data > 0)
		{
			result->data = 1;
		}
		else
		{
			result->data = -1;
		}
		Left = Left->Leftlink;
		Right = Right->Leftlink;
		while (Left != Lhead || Right != Rhead || flag == 1)
		{
			LinkNode<int>* newnode;
			if (Right == Rhead || Left == Lhead)
			{
				if (Left == Lhead && Right == Rhead)
							num = 0 + 0 + flag;
				else
				{
					if (Right == Rhead)
						num = Left->data + 0 + flag;
					else
					{
						if (Left == Lhead)
						num = 0 + flag + Right->data;
					}
				}
			}
			else
			{
				num = Left->data + Right->data + flag;
			}
			flag = 0;
			if (num > 9999)
			{
				num -= 10000;
				flag = 1;
			}
			if (Left != Lhead)
				Left = Left->Leftlink;
			if (Right != Rhead)
				Right = Right->Leftlink;
			newnode = new LinkNode<int>(num);
			newnode->Rightlink = result->Rightlink;
			result->Rightlink = newnode;
		}
		Output(result);
		Delete_result(result);
	}
	else
	{
		Sub_int(Lhead, Rhead);
	}
}

void Sub_int(LinkNode<int>* Lhead, LinkNode<int>* Rhead)
{
	LinkNode<int>* Left = Lhead, * Right = Rhead;
	LinkNode<int>* result = NULL;
	result = new LinkNode<int>;
	if (result == NULL)
		return;
	if (Left->data > 0 && Right->data < 0 || Left->data < 0 && Right->data > 0)
	{
		int flag = 0;
		if (abs(Left->data) > abs(Right->data))
		{
			if (Left->data < 0)
				result->data = -1;
			else
				result->data = 1;
			Left = Left->Leftlink;
			Right = Right->Leftlink;
			while (Left != Lhead)
			{
				LinkNode<int>* newnode = NULL;
				int num = 0;
				if (Right != Rhead)
					num = Left->data - Right->data - flag;
				else
					num = Left->data - 0 - flag;
				flag = 0;
				if (num < 0)
				{
					flag = 1;
					num += 10000;
				}
				if (Right != Rhead)
					Right = Right->Leftlink;
				Left = Left->Leftlink;
				newnode = new LinkNode<int>(num);
				newnode->Rightlink = result->Rightlink;
				result->Rightlink = newnode;
			}
		}
		else
		{
			if (abs(Left->data) < abs(Right->data))
			{
				if (Right->data < 0)
					result->data = -1;
				else
					result->data = 1;
				Left = Left->Leftlink;
				Right = Right->Leftlink;
				while (Right != Rhead )
				{
					LinkNode<int>* newnode = NULL;
					int num = 0;
					if (Left != Lhead)
						num = Right->data - Left->data - flag;
					else
						num = Right->data - 0 - flag;
					flag = 0;
					if (num < 0)
					{
						flag = 1;
						num += 10000;
					}
					if (Left != Lhead)
						Left = Left->Leftlink;
					Right = Right->Leftlink;
					newnode = new LinkNode<int>(num);
					newnode->Rightlink = result->Rightlink;
					result->Rightlink = newnode;
				}
			}
			else
			{
				if (Left->data < 0)
				{
					int flag = 0;
					Left = Left->Leftlink;
					Right = Right->Leftlink;
					while (Left != Lhead && Right != Rhead)
					{
						LinkNode<int>* newnode = NULL;
						int num = 0;
						num = Right->data - Left->data - flag;
						if (num < 0)
						{
							if (Right->Leftlink != Rhead)
							{
								flag = 1;
								num += 10000;
							}
						}
						if (Right != Rhead)
							Right = Right->Leftlink;
						if (Left != Lhead)
							Left = Left->Leftlink;
						if (Right == Rhead && Left == Lhead)
						{
							if (num < 0)
								result->data = -1;
							else
								result->data = 1;
						}
						newnode = new LinkNode<int>(num);
						newnode->Rightlink = result->Rightlink;
						result->Rightlink = newnode;
					}
				}
				else
				{
					int flag = 0;
					Left = Left->Leftlink;
					Right = Right->Leftlink;
					while (Left != Lhead && Right != Rhead)
					{
						LinkNode<int>* newnode = NULL;
						int num = 0;
						num = Left->data - Right->data - flag;
						if (num < 0)
						{
							if (Left->Leftlink != Lhead)
							{
								flag = 1;
								num += 10000;
							}
						}
						if (Right != Rhead)
							Right = Right->Leftlink;
						if (Left != Lhead)
							Left = Left->Leftlink;
						if (Right == Rhead && Left == Lhead)
						{
							if (num < 0)
								result->data = -1;
							else
								result->data = 1;
						}
						newnode = new LinkNode<int>(num);
						newnode->Rightlink = result->Rightlink;
						result->Rightlink = newnode;
					}
				}
			}
		}
		Output(result);
		Delete_result(result);
	}
	else
	{
		Add_int(Lhead, Rhead);
	}
}

void Delete_result(LinkNode<int>* t)
{
	LinkNode<int>* current = t;
	while (t != NULL)
	{
		t = t->Rightlink;
		delete current;
		current = t;
	}
}

void Calctor(string a, string b)
{
	int coount1 = 0, count2 = 0, left = 0, right = 0;
	Check_count(coount1, a);
	Check_count(count2, b);
	CircLinkList<int> Left_num(coount1), Right_num(count2);
	LinkNode<int>* Left_head = NULL, *Right_head = NULL;
	Left_head = Left_num.Get_head();
	Right_head = Right_num.Get_head();
	All_int_IN(a,Left_num);
	All_int_IN(b, Right_num);
	cout << "加法结果输出:" << endl;
	Add_int(Left_head, Right_head);
	cout << "减法结果输出:" << endl;
	Right_head->data = -Right_head->data;
	Sub_int(Left_head, Right_head);
	Right_head->data = -Right_head->data;
}

int main()
{
	string a, b;
	Input(a, b);
	Calctor(a, b);
	return 0;
}
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值