实验报告大整数Word文档下载推荐.docx

上传人:b****7 文档编号:22700676 上传时间:2023-02-05 格式:DOCX 页数:18 大小:35.24KB
下载 相关 举报
实验报告大整数Word文档下载推荐.docx_第1页
第1页 / 共18页
实验报告大整数Word文档下载推荐.docx_第2页
第2页 / 共18页
实验报告大整数Word文档下载推荐.docx_第3页
第3页 / 共18页
实验报告大整数Word文档下载推荐.docx_第4页
第4页 / 共18页
实验报告大整数Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

实验报告大整数Word文档下载推荐.docx

《实验报告大整数Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验报告大整数Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

实验报告大整数Word文档下载推荐.docx

抽象数据类型线性表的定义如下:

ADTList{

数据对象:

D={ai|ai∈ElemSet,i=1,2,...,n,n≥0}

{称n为线性表的表长;

称n=0时的线性表为空表。

}

数据关系:

R1={<

ai-1,ai>

|ai-1,ai∈D,i=2,...,n}

{设线性表为(a1,a2,...,ai,...,an),称i为ai在线性表中的位序。

基本操作:

}ADTList

LinkList{

LNode*head;

//头指针(带头结点)

LNode*tail,*cur;

//尾指针,当前指针

//intlength;

//链表长度

boolInit();

//初始化

初始条件:

操作结果:

初始化

voidClear();

已存在

//清除单链表

voidCreate(intn);

初始条件:

//建立含n个结点的单链表

intLocate(inte);

//查找

//清除线性表

voidInsertBefore(inti,inte);

//插入元素

初始条件:

boolDelete(inti,int&

e);

//删除元素

voidTraverse();

//遍历,并输出内容

boolEmpty();

//判断空表

boolGetElem(inti,int&

//获取元素

voidcreatelistbyorder(strings);

//字符串创建链表

};

LinkList

2、主程序的处理流程

intmain()

{

线性表LA,LB,LC初始化;

读入2个字符串;

将这2个字符串创建成链表;

分别用2个指针指向线性表表头;

进行运算;

遍历被插入的链表LC(即输出运算结果);

return0;

三、详细设计

1、线性表的实现

structLinkList{

//初始化

//清除线性表

//建立含n个结点的单链表

//遍历,并输出内容

//判断空表

boolGetElem(inti,int&

voidcreatelistbyorder(strings);

//字符串创建链表

boolLinkList:

:

Init()

{

head=newLNode;

head->

next=NULL;

returntrue;

voidLinkList:

InsertBefore(inti,inte)

LNode*p=head;

while(p->

next!

=NULL&

&

i>

1)

{

p=p->

next;

i--;

}

if(p==NULL||i<

1)return;

LNode*s=newLNode;

s->

data=e;

next=p->

p->

next=s;

Delete(inti,int&

e)

intj=0;

j<

i-1)

p=p->

++j;

//寻找第i个结点,并令p指向其前趋

if(!

(p->

next)||j>

i-1)returnfalse;

//删除位置不合理

LNode*q=p->

next=q->

//删除并释放结点

e=q->

data;

deleteq;

Clear()

LNode*p;

while(head->

=NULL)

p=head->

head->

next=p->

}

intLinkList:

Locate(inte)

LNode*p=head->

while(p!

=NULL&

p->

data!

=e)

j++;

returnj;

Create(intn)

head=newLNode;

next=NULL;

//先建立一个带头结点的单链表

for(inti=n;

i>

0;

-

LNode*p=newLNode;

cin>

>

//输入元素值

p->

next=head->

next=p;

//插入

Traverse()

=NULL)

cout<

<

data<

endl;

Empty()

if(head->

next=NULL)returntrue;

elsereturnfalse;

GetElem(inti,int&

e)//获取元素

if(i<

1)returnfalse;

1)

if(p==NULL)returnfalse;

elsee=p->

createlistbyorder(strings)

for(inti=0;

i<

s.size();

i++)

{

LNode*p=head;

LNode*q=newLNode;

q->

data=s[i]-'

0'

;

next=q;

3、主程序

intmain()

{

LinkListLA,LB,LC;

LA.Init();

LB.Init();

LC.Init();

strings1,s2;

cin>

s1>

s2;

LA.createlistbyorder(s1);

LB.createlistbyorder(s2);

LNode*it1=LA.head->

LNode*it2=LB.head->

intcarry=0;

while(it1!

=NULL||it2!

intc=carry;

if(it1!

{

c=c+it1->

it1=it1->

}

if(it2!

c=c+it2->

it2=it2->

carry=c/10;

c=c%10;

LC.InsertBefore(1,c);

if(carry>

0)

LC.InsertBefore(1,carry);

LC.Traverse();

return0;

测试结果:

总代码:

#include<

iostream>

string>

usingnamespacestd;

structLNode

intdata;

//数据域

LNode*next;

//指针域

};

实验心得:

拿到这个实验,我首先看了老师上课的课件,弄懂能够使这个实验实现的思想:

即把输入数据当做2个字符串处理,而后我又发现把字符串转化成线性表处理会更加简单。

即把输入的2个字符串转化为线性表LA,LB;

然后将他们各个位置对应相加插入线性表LC。

实现这个操作需要用到boolInit();

这几个函数,因此我又翻看了以前的笔记,将这几个函数在intmain()外写好。

当我把所有需要的函数写好,在编译没有错误的时候,我进行了数据测试,结果发现只能输入,而不能输出结果,经过数次检查后我仍然找不到错误,然后我又试着用老师教过的调试方法,结果发现输入正确,然而初始化这部并未实现,于是就去上面的函数查找错误,结果发现我在InsertBefore(inti,inte)中创建了一个新链表。

而后我改了这个错误,再次运行发现结果正确了,由此,我懂得了做实验应该细心,仔细发现错误,切记不能照搬照抄老师的代码。

有时即使编译没有错误,运行结果出来时还是会有错误。

所以以后的实验我不仅要细心,更要谨慎。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1