c语言长整数加减,C语言长整数加减乘.doc

该博客介绍了如何使用C语言定义链表结构来存储长整数,并实现长整数的加减乘法操作。文章通过定义结构体`DuLNode`创建双向链表,然后通过`turn`函数将输入的字符串转换为长整数。`ListCreate_L`函数用于创建链表,`managedata`函数处理溢出情况。整个过程涉及到了字符串处理、链表操作和数值计算等技术。
摘要由CSDN通过智能技术生成

C语言长整数加减乘

长整数加减乘#include#include#include#include

#define OK 1#define ERROR 0#define OVERFLOW -1 #define NULL 0

typedef int Status;

//--链表定义-- typedef struct DuLNode{ Status data; //数据域 struct DuLNode *next,*prior; //指针域}DuLNode,*DuLinkList;

int i;char str[400];

Status turn(Status &data){for(int j=0;i>=0;--i,j++){if(str[i]=='-'&&i==0)break;if(j%4==0)data=str[i]-'0';if(j%4==1)data+=10*(str[i]-'0');if(j%4==2)data+=100*(str[i]-'0');if(j%4==3){data+=1000*(str[i]-'0');--i;if(i==-1||str[i]=='-')return OK;return 0;}if(i==0)return OK;}return OK;}Status Input(Status &data){return turn(data);}Status ListCreate_L(DuLinkList &L,DuLinkList &dl){ DuLNode *r,*q; //r指向尾结点,q指向新开辟结点 L=(DuLNode*)malloc(sizeof(DuLNode)); if(L==NULL)exit(-1); r=L;q=L; for(;;){ q->next=NULL; q->prior=r; r=q; if(Input(q->data)){if(str[0]=='-')q->data=-q->data;break;} if(str[0]=='-')q->data=-q->data; q=(DuLNode*)malloc(sizeof(DuLNode)); r->next=q; if(!q)exit(OVERFLOW); } L->prior=NULL; dl=r; return OK;}void managedata(DuLinkList a,DuLinkList b,Status &data,int &temp){int m=0;if(data<0&&data>-9999){for(;a&&b;a=a->next,b=b->next){if(!a->next&&!b->next){if(a->data>0){if(a->data > -b->data)m=1;}else{if(-a->data < b->data)m=1;}}}if(!a||!b){for(;a;a=a->next)if(a->data>0){m=1;break;}for(;b;b=b->next)if(b->data>0){m=1;break;}}if(m){temp=-1;data=10000+data;}}else if(data>0&&data<=9999){for(;a&&b;a=a->next,b=b->next){if(!a->next&&!b->next){if(a->data>0){if(a->data < -b->data)m=1;}else{if(-a->data > b->data)m=1;}}}if(!a||!b){for(;a;a=a->next)if(a->data<0){m=1;break;}fo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值