设计一个程序实现两个任意长的整数的求和运算.基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序.要求输入和输出每四位一组,组间用逗号隔开.如:1,0000,0000

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 20:28:20
设计一个程序实现两个任意长的整数的求和运算.基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序.要求输入和输出每四位一组,组间用逗号隔开.如:1,0000,0000设计一个程序

设计一个程序实现两个任意长的整数的求和运算.基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序.要求输入和输出每四位一组,组间用逗号隔开.如:1,0000,0000
设计一个程序实现两个任意长的整数的求和运算.
基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序.要求输入和输出每四位一组,组间用逗号隔开.如:1,0000,0000,0000,0000.
谁能和我说说思想是什么?
数据结构课程设计,要用C编写,

设计一个程序实现两个任意长的整数的求和运算.基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序.要求输入和输出每四位一组,组间用逗号隔开.如:1,0000,0000
1.只考虑都是正数的情况,比较简单.
循环连别的节点这样定义:
struct Node{
int data;
Node * next;
Node * pre};
每个节点只保存小于10000的四位数,当两个长整数(也就是两个循环链表)相加的时候,
假设链表从低位到高位每四位保存到一个节点,那么就模拟加法的进位过程,两个链表的
对应节点相加,如果超过10000就向下一个节点进位,本节点只保留余数.
需要注意的是如果最后相加超过了最长链表的长度,加法的结果链表需要增加一个节点.
2.如果考虑加法的操作数有负数,设计要麻烦一些.
这个时候头结点要另外设计:
struct SNode{
char symbol;
Node * next;
Node * pre;}; 中间节点同上.
如果两个都是负数,可以调用1中的方法相加,但是最后结果要取负数,也就是symbol='-'.
如果一正一负,可以重新设计一个减法借位的过程,不过还有一个更好的方法.
联想到计算机中对负数加法的操作,使用了取补相加的方法.
我们可以借鉴这种思想,取(两个数中最长位数+1)为模.将负数链表每个节点取反(每个节点的模为10000,等效于9999-原值)再加一,然后把两个链表用1中的进位方法相加,如果结果中最后一个节点产生了进位,那么结果为正数,除了头结点置正无需再加额外操作.如果结果中最后一个节点没有进位,那么结果是负数,需要将头节点symbol置于负,并将链表每位取反再加一.

设计一个程序实现两个二十位的整数的求和运算. 设计一个程序实现两个任意长的整数的求和运算.基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序.要求输入和输出每四位一组,组间用逗号隔开.如:1,0000,0000 设计一个程序实现两个任意长的整数的求和运算.设计一个实现任意长的整数进行加法运算的演示程序.要求输入和输出每四位一组,组间用逗号隔开.如:1,0000,0000,0000,0000.程序代码不要有错、 编写一个求和的程序,要求能任意输入两个整数,求和 用javascript写 C++长整数、高精度计算器设计一个程序实现两个任意长的整数(包括正数和负数)、任意精度实数的算术运算. 要求:(1)用动态链表存贮数据,每结点含一个整型变量,表示若干位数.(2)整 设计一个程序实现两个任意长的整数(包括正数和负数)、任意精度实数的算术运算.要求:(1)用动态链表存贮数据,每结点含一个整型变量,表示若干位数.(2)整数输入和输出按中国对于 用C语言编写程序实现从键盘上任意输入两个整数,输出两个整数的乘积. 编一个程序,用递归函数 gcd(a,b)实现求两个整数 a,b 最大公因子的欧几里德算法.输入任意整数a,b,调用递 用C语言设计一个程序以便能快速地实现复制任意长度的文件 编写一个C语言程序实现判断任意输入的一个整数是几位数,并求每位的和. 谁能帮我编一个C语言程序?任意输入两个整数,输出它们的最大公约数 编写一个程序实现求解任意算术表达式的值 用vb脚本语言编写一个小程序,程序实现功能如下:任意输入三个整数,使其按大到小的顺序输出.紧急! 设计一个程序:输入一个整数,判断它的奇偶性. 编写一个程序 判断任意输入的整数的奇偶性. 编写一个程序 判断任意输入的整数的奇偶性 编写循环结构程序 对100~1000之间的整数进行求和( for以及Dowhile语句实现) 编写:判断任意一个整数是否为素数的程序