1 / 53
文档名称:

数据结构实习报告.doc

格式:doc   大小:297KB   页数:53页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实习报告.doc

上传人:wxc6688 2022/5/27 文件大小:297 KB

下载得到文件列表

数据结构实习报告.doc

相关文档

文档介绍

文档介绍:数据结构实****报告
学号:20091002527
姓名:金学玉
班级:116092—10
【实****一】 线性表及其应用
【问题描述】
大数运算——计算n的阶乘template<class T>
int Chain<T>::Length() const
{
return length;
}
template<class T>
bool Chain<T>::Find(int k, T &x) const
{
if(k<1||k>length)
return false;
x = Iterator(k)->data;
return true;
}
template<class T>
int Chain<T>::Search(const T &x) const
{
ChainNode<T>* current = first->link;
int index = 1;
first->data = x;
while(current->data != x)
{
current = current->link;
index++;
}
return ((current == first)?0:index);
}
template<class T>
Chain<T>& Chain<T>::Delete(int k, T &x)
{
if( k<1||k>length)
throw OutOfBounds();
ChainNode<T>* q = Iterator(k-1);
ChainNode<T>* p;
if(k==1)
q = first;
p = q->link;
q->link = p->link;
p->link->back = q;
x = p->data;
delete p;
length--;
return *this;
}
template<class T>
Chain<T>& Chain<T>::Insert(int k, const T &x)
{
if(k<0||k>length)
throw OutOfBounds();
ChainNode<T>* q = Iterator(k);
ChainNode<T>* p;
p = q->link;
ChainNode<T>* y = new ChainNode<T>;
y->data = x;
q->link = y;
y->link = p;
p->back = y;
y->back = q;
length++;
return *this;
}
template<class T>
ChainNode<T>* Chain<T>::Iterator(int k)
{
ChainNode<T>* current = first;
if(k<=length/2)
{
for(int i=0 ; i<k; i++)
current = current->link;
}
else
{
for(int i=0 ; i<length-k+1; i++)
current = current->back;
}
return current;
}
template<class T>
T* Chain<T>::ExData(int k)
{
if(k<1||k>length)
throw OutOfBounds();
ChainNode<T>* q = Iterator(k);
return &(q->data);
}
template<class T>
Chain<T>& Chain<T>::ChData(ChainNode<T>* q,const T& x)
{
q->data = x%10000;
if(x>9999)
{
if(q->link == first)
Insert(length,0);
int m = q->link->data;
m += x/10000;
ChData(q->link,m);
}
return *this;
}
template<class T>
void Chain<T>::Output()
{
}
template<class T>
class ChainIterator
{
public: