大数阶乘数据结构算法课程设计 - 副本

大数阶乘数据结构算法课程设计 - 副本

ID:1466469

大小:213.50 KB

页数:23页

时间:2017-11-11

大数阶乘数据结构算法课程设计 - 副本_第1页
大数阶乘数据结构算法课程设计 - 副本_第2页
大数阶乘数据结构算法课程设计 - 副本_第3页
大数阶乘数据结构算法课程设计 - 副本_第4页
大数阶乘数据结构算法课程设计 - 副本_第5页
资源描述:

《大数阶乘数据结构算法课程设计 - 副本》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实习题目一线性表及其应用【问题描述】大数运算——计算n的阶乘(n>=20)。【基本要求】(1)数据的表示和存储;(1.1)累积运算的中间结果和最终的计算结果的数据类型要求是整型——这是问题本身的要求;(1.2)试设计合适的存储结构,要求每个元素或节点最多存储数据的3位数值。(2)数据的操作及其实现:基于设计的存储结构实现乘法操作,要求从键盘上输入n值,在屏幕上显示最终计算结果。【实现提示】(1)设计数据的存储结构:介于阶乘运算的精确性以及实型数据表示的不精确性,本题不能采用实型表示累积运算的中间结果和最终的

2、计算结果,而只能用整型。然而由于普通整型和长整型所能表述数的范围受其字长的限制,不能表示大数阶乘的累积结果,故必须设计一个合适的数据结构实现对数据的存储,例如可以让每个元素或节点存储数据的若干位数值。从问题描述不难看出n值为任意值,故为使程序尽量不受限制,应采用动态存储结构。(2)数据的操作及其实现:(2.1)累积运算的特点是当前的计算结果是下次乘法运算的乘数;(2.2)实现两个数的乘法运算须考虑:(1)乘数的各位数都要与被乘数进行乘法运算;(2)乘法过程中的进位问题及其实现;(3)因每个元素或节点最多存储

3、数据的3位数值,故当元素或节点中的数值大于999,需向前一个元素或节点进位。【实现结构】(1)采用链式存储结构实现(普通单链表,循环单链表,普通双项链表和双向循环链表中任选一种结构)。(2)采用动态数组实现。【实现程序】#include"stdafx.h"#includeusingnamespacestd;templateclassChain;templateclassChainNode{23friendChain;private:Tdata;Cha

4、inNode*link;};templateclassChain{public:Chain(){first=0;};~Chain();boolIsEmpty()const{returnfirst==0;}intLength()const;boolFind(intk,T&x);Chain&Insert(intk,constT&x);Chain&Change(intk,Tx);Chain&Delete(intk,T&x);Chain&Search(constT&x)

5、const;intOutPut();private:ChainNode*first;};/**************析构函数(删除链表的所有节点)********************/templateChain::~Chain(){ChainNode*next;while(first){next=first->link;deletefirst;first=next;}}/**********************确定链表的长度********************

6、*********/templateintChain::Length()const{ChainNode*current=first;intlen=0;while(current){len++;23current=current->link;}returnlen;}/*********************在链表中查找第K个元素*************************/templateboolChain::Find(intk,T&x){ChainN

7、ode*current=first;intindex=0;while(indexlink;index++;}if(current){x=current->data;returntrue;}returnfalse;}/*********************向链表中插入元素*************************/templateChain&Chain::Insert(intk,constT&x){Cha

8、inNode*p=first;for(intindex=1;indexlink;ChainNode*y=newChainNode;y->data=x;if(k){y->link=p->link;p->link=y;}else{y->link=first;first=y;}return*this;}/********************改变链表第k个元素的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。