两个任意长整数相加

2026/1/18 12:25:22

(*head)->prior=*head; (*head)->next=*head; }

//双向链表的表长

int ListLength(DLNode *L) {

DLNode *p=L; int len=0;

while(p->next!=L) {

p=p->next; len++; }

return len; }

//双向链表中插入数据

int ListInsert(DLNode *L,int i,int x)//i表示要插入的位置,x表示要插入的值 {

DLNode *p,*s; int j;

p=L->next; j=0;

while(p!=L&&j

p=p->next; j++; }

if(j!=i) {

cout<<\插入位置不合法!\ return 0; }

s=new DLNode ;//为节点申请空间 s->data=x;//为节点赋值

s->prior=p->prior;//在正确的位置插入节点 p->prior->next=s; s->next=p; p->prior=s; return 1; }

//删除双向链表中的数据

int ListDelete(DLNode *L,int i,int *x)//i表示要删除的位置,*X用来保存要删除的那个节点的值

{

DLNode *p; int j;

p=L->next; j=0;

while(p->next!=L&&j

p=p->next; j++; }

if(j!=i) {

cout<<\删除位置不合法!\ return 0; }

p->prior->next=p->next;//删除第i个位置的节点 p->next->prior=p->prior;

*x=p->data;//保存删除节点的值 delete p;//释放空间 return 1; }

//输入的数据

int InputNumber(DLNode *L) {

int input,i=0;//i表示第i个节点 char c;

//读入数据时,用0表示负数,1表示正数 cin>>input>>c; while(1) {

if(input<0&&i==0)//输入数为负且是第一个节点 {

L->data=0;//将长整数的符号保存在头结点中 input=fabs(input);//取输入数字的绝对值 ListInsert(L,i,input);//插入数据 }

else if(input>=0&&i==0)//输入数为正且是第一个节点 {

L->data=1;//将长整数的符号保存在头结点中 ListInsert(L,i,input);//插入数据 } else {

ListInsert(L,i,input);//不是第一个节点

} i++;

if(c==',') break;//输入逗号,跳出循环 cin>>input>>c; }

return 1; }

//输出数据

void OutputNumber(DLNode *L,int sign) {

DLNode *r=L->prior;

if(sign==1)//输出结果的正负 {

printf(\} else {

printf(\}

printf(\r=r->prior;

while(r!=L)//控制输出的格式 {

if(r->data<10) {

printf(\

printf(\ }

else if(r->data<100) {

printf(\

printf(\ }

else if(r->data<1000) {

printf(\

printf(\ } else {

printf(\ }

r=r->prior; }

printf(\}

//任意两个整数的加运算

int Add(DLNode *L1,DLNode *L2,DLNode *L3) {

int data; int i=0;

int length1,length2;

int longer;//用于标记在异号情况下哪个整数的位数一个更长些 int carry=0;//标记进位 int borrow=0;//标记借位

DLNode *p=L1->next,*q=L2->next,*l3=L3->prior,*notsame; //两个数为异号时的加法运算 if(L1->data!=L2->data) {

i=0;

length1=ListLength(L1); length2=ListLength(L2); //结点个数相同的情况 if(length1==length2) {

//找出p和q中第一个 数据不相同的节点 while(p!=L1)//循环整个链表 {

if(p->data>q->data)//p的值大于q的值 {

longer=1;

notsame=p->prior; break; }

else if(p->datadata)//q的值大于的p值 {

longer=2;

notsame=q->prior; break; }

else//; {

p=p->next; q=q->next; } }

//进入下一步的判断

if(p==L1)//一直到了表尾还是相同,则说明这两个数相同


两个任意长整数相加.doc 将本文的Word文档下载到电脑
搜索更多关于: 两个任意长整数相加 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219