数据结构课程设计汇本~长整数加减运算.docxVIP

  • 7
  • 0
  • 约3.56千字
  • 约 8页
  • 2021-01-26 发布于天津
  • 举报

数据结构课程设计汇本~长整数加减运算.docx

课程设计报告 课程名称 数据结构课程设计 题 目 长整数加减运算 指导教师 设计起始日期 3.21?3.28 学 院 系 别 学生姓名 班级/学号 成 绩 需求分析 设计一个实现任意长的整数间进行四则运算的程序,要求完成长整数的加 运算和减运算。长整数的长度没有限制,可以是任意长。正确处理好运算之后 的进位和借位。 (1)输入:〃卜]表示“ (1) 输入: 〃卜]表示“-”可选 (2) 输出:**,***,****,***是否继续计算(Y/N): 功能:能正确进行相关数据的加减运算 测试数据: 0; 0;输出“ 0” 2345,6789; 7654,3211 输出“ 1,0000,0000 1,0000,0000,0000 -9999,9999 ;输出“ 9999,0000,0001 1,0001,000Q1 -1,0001,000Q 输出“ 0” 自选数据 概要设计 1、使用双向循环链表实现长整数的运算及存储, 构造双向循环链表,创建 双向循环链表表示两个整数 2、 设计两整数相加的函数 Add(),addtwo(),其中 Add()调用 addtwo()函数,addtwo()具体实现两个整数的加减操作,进位及借 位问题;设计显示函数 Display。及主函数main() 三、详细设计 Add () ” Display ()addtwo() Creat (char )sum(dnt) iLinkbi st ()1、数据结构设计双向循环链表的构造typedef struct Lin kNode{ int data;Lin kNode *n ext, *pre; Add () ” Display () addtwo() Creat (char ) sum(dnt) iLinkbi st () 1、数据结构设计 双向循环链表的构造 typedef struct Lin kNode{ int data; Lin kNode *n ext, *pre; }li nklist; 2、创建两个长整数的链表 伪算法 //记录每个节点的整数(小于) //记录下一个节点的地址和前一个节点的地址 void Creat(char a[]) //引入字符串,创立两个链表,分别表示两个整数 { int 记录字符串i ;记录加数节点数j ;记录被加数节点数s;标记字符串中的-号 记录字符串中的字符转化为整数的值 k,使每个节点记录位I while(指针所指不是“;”)被加数字符数m自动加1 〃m记录字符串中被加数 的字符数 n=m; while(执政没有指到结尾处)总字符串n位数自动加1; 〃n记录字符串的总字 符数 if被加数不是负数 { head0-data=(-1); // 记录整数符号 w=1; } else {head0-data=1;} for(i=m-1;i=w;i--){If指针所指为数字,而不是“,” for(i=m-1;i=w;i--) { If指针所指为数字,而不是“,” { k+=(a[i]-O)*sum(l); 〃sum() I++; } if(a[i]==,||i==w) { 把整数存到双向循环链表中 s++; k=0; l=0; } } headO-pre-data*=s; } //把字符转化为整数 计算的乘方 //节点数加 //重新初始化k和I //存储整数符号和节点数 四、 调试分析 a、 调试过程中,连续输入数字运算,速度会明显变慢,发现在 初始化链表及运算后没有释放链表, 造成系统资源浪费,经 改造后自爱后面添加了析构函数 b、 算法的时空分析 创建整数链表有三个循环,次数都为 n。时间复杂度和空间 复杂都都为O (n) 五、 使用说明和测试结果 1、使用说明:用户按照屏幕所显示的提示来正确输入数字 [―; [— # MX MM 理初JU—个两个薮之间用y隔开 其中[-]表示“-”为可选,从右至左每四位数字一个 while (a[m]!= m++; while (a[m]!= m++; 〃m记录字符串中被加数的字符数 2、测试结果: 2345,6785:7654,3211 00,0000; 00,0000;-9999,9999 ,0081 L, 0001; -1,0001 □. 0001 六、心得体会 六、 心得体会 通过此实验,加深了我对链表的基本操作,对双向链表及循环链 表的操作及实际运用有了很深的体会,在处理数字的进位借位时 有了进一步的提咼。 七、附录 1、链表的创建: #include stdio.h #include math.h #include stdlib.h typedef struct LinkNode{ int data; //记录每个节点的整数(小于) LinkNod

文档评论(0)

1亿VIP精品文档

相关文档