欢迎来到天天文库
浏览记录
ID:46569597
大小:112.50 KB
页数:37页
时间:2019-11-25
《数据结构实习题集目》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、nn(n>20)的阶乘n【问题描述】n大数运算——计算n的阶乘(n>=20)。n【基本要求】n(1)数据的表示和存储;n(1.1)累积运算的中间结果和最终的计算结果的数据类型要求是整型——这是问题本身的要求;n(1.2)试设计合适的存储结构,要求每个元素或结点最多存储数据的3位数值。n(2)数据的操作及其实现:n基于设计的存储结构实现乘法操作,要求从键盘上输入n值,在屏幕上显示最终计算结果。n【测试数据】n(1)n=20,n!=2432902008176640000n(2)n=30,n!=265252859812191058636308480000000n#include"stdafx
2、.h"n#includen#includenusingnamespacestd;ntemplatenclassChain;ntemplatenclassChainNoden{nfriendChain;nprivate:nTdata;nChainNode*link;n};ntemplatenclassChainn{npublic:nChain(){first=0;}//构造函数n~Chain();//析构函数nboolIsEmpty()const{returnfirst==0;}//判断链表
3、是否为空nintLength()const;//求链表的长度nboolFind(intk,T&x)const;//查找第k个元素nintSearch(constT&x)const;//查找元素xnChain&Delete(intk,T&x);//删除第k个元素nChain&Insert(intk,constT&x);//在第k个元素之后插入xnvoidOutput(ostream&out)const;//单链表的输出nChain&Fac(longn);n//求大数阶乘nprivate:nChainNode*first;//指向第一个节点n};nntemplate
4、nChain::~Chain()n{//删除所有的节点nChainNode*next;nwhile(first)n{nnext=first->link;ndeletefirst;nfirst=next;n}n}ntemplatenboolChain::Find(intk,T&x)constn{//查找第k个元素,并赋值给xnif(k<1)returnfalse;nChainNode*current=first;nintindex=1;nwhile(indexlink;
5、nindex++;n}nif(current)n{nx=current->data;nreturntrue;n}nreturnfalse;n}nntemplatenintChain::Search(constT&x)constn{//查找元素x,返回该元素的下标nChainNode*current=first;nintindex=1;nwhile(current&¤t->data!=x)n{ncurrent=current->link;nindex++;n}nif(current)returnindex;nreturn0;n}nntemplate
6、nChain&Chain::Delete(intk,T&x)n{//删除第k个元素,并赋值给x,返回改变后的链表nChainNode*p=first;nif(k==1)nfirst=first->link;nelsen{nChainNode*q=first;nfor(intindex=1;indexlink;np=q->link;nq->link=p->link;n}nx=p->data;ndeletep;nreturn*this;n}ntemplatenintChain::Len
7、gth()const//返回链表的长度n{nChainNode*current=first;nintlen=0;nwhile(current)n{nlen++;ncurrent=current->link;n}nreturnlen;n}ntemplatenChain&Chain::Insert(intk,constT&x)//在第k个元素之后插入x,返回插入后的链表n{nChainNode*p=first
此文档下载收益归作者所有