欢迎来到天天文库
浏览记录
ID:35626582
大小:203.50 KB
页数:18页
时间:2019-04-03
《数据结构课程设计报告-n元多项式乘法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、.数据结构课程设计报告设计题目:n元多项式乘法学号:姓名:指导教师:专业:班级:学年学期:起止时间:哈尔滨师范大学计算机科学与信息工程学院18多项式运算的算法分析和设计一、具体任务功能:完成两个n元多项式作乘法,给出明确的等式形式。分步实施:1).初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2).完成最低要求:建立一个文件,实现两个一元二次多项式作乘法。3).进一步要求:实现三元二次多项式的乘法。二、概要设计定义单链表的抽象数据类型:ADTLinkList{数据对象:D={ai
2、ai∈ElemSet,i=1,2,3,…,n>=0}数据关系:R={3、i,ai+1>4、ai,ai+1∈D}//----------------------------------------线性表的单链表基本操作------------------------------------------//LinkListInitList(void);构造一个空的线性表voidDestroyList(LinkList*L);初始条件:线性表L已存在。操作结果:销毁线性表L。LinkListMakeEmpty(LinkListL)‘初始条件:线性表L已存在。操作结果:将线性表L重置为空表。intIsEmpty(LinkListL);初始条件:线性5、表L已存在。操作结果:判断线性表是否为空表。intListLength(LinkListL);初始条件:线性表L已存在。操作结果:返回线性表L结点的个数。LNodeIsLast(LinkListL);初始条件:线性表L已存在。操作结果:返回线性表L的最后一个结点(尾结点)。LNodeNewLNode(ElemTypeX);构造一个数据域为X的新结点LNodeFindPrefious(ElemTypeX,LinkListL);初始条件:线性表L已存在。操作结果:在线性表L中寻找值为X的结点,若找到则返回该结点的前驱,否则返回NULL。voidListDelete(LNo6、dePre);初始条件:线性表L中结点P已找到。操作结果:删除该结点。链表的结点结构: ┌──┬──┐ │data│next│ └──┴──┘data域--存放结点值的数据域18next域--存放结点的直接后继的地址(位置)的指针域(链域)此题定义系数和指数结构如下:coefexpnext//------------------------------------------线性表的单链表存储结构-----------------------------------//TypedefstructLnode{ElemTypedata;//结点的数据域StructL7、node*next;//结点的指针域}Lnode,*LinkList;//----------------------基本操作---------------------------------------------------------------------------//InitArray(&A,n,bound1,...,boundn)操作结果:若维数n和各维长度合法则构造相应数组A。DestroyArray(&A)初始条件:数组A已经存在。操作结果:销毁数组A。Value(A,&e,index1,...,indexn)初始条件:A是n维数组,e为元素变量,n8、个下标值。操作结果:若各下标不超界,则e赋值为所指定的A的元素值,并返回OK。Assign(&A,e,index1,...,indexn)初始条件:A是n维数组,e为元素变量,n个下标值。操作结果:若下标不超界,则将e的值赋给A中指定下标的元素。}ADTArray三、详细设计单链表在C语言中是一种非常常见的结构,而在C++中的实现却又有不同,在一些地方更简单,更严密。同时,由于C++的一些特点,使它具有C语言所不具有的“安全化”,所以本程序用C++。有了链表特定的数据类型Mulpoly,接下来就需要建立这个链表。这里我们自定义一个构造函数CreatePoly来构造链表9、。首先定义一个CreatePoly型的指针变量head作为头结点,存储多项式的信息(项数),为head分配存储空间建立一个头结点并为其数据域赋值,分配存储空间用c++语言中的malloc来实现;这时输入多项式的项数num,把它赋值给head的coef域,exp域赋值为1,此时再定义一个CreatePoly型的指针变量r指向head头结点。还要用类似的算法建立多项式的其它结点,剩余节点的插入用一个while循环来实现,while循环中的控制变量i从大于0的数n开始递增,直到到达num,此时while循环结束。While循环的循环体由两部分组成,第一部分
3、i,ai+1>
4、ai,ai+1∈D}//----------------------------------------线性表的单链表基本操作------------------------------------------//LinkListInitList(void);构造一个空的线性表voidDestroyList(LinkList*L);初始条件:线性表L已存在。操作结果:销毁线性表L。LinkListMakeEmpty(LinkListL)‘初始条件:线性表L已存在。操作结果:将线性表L重置为空表。intIsEmpty(LinkListL);初始条件:线性
5、表L已存在。操作结果:判断线性表是否为空表。intListLength(LinkListL);初始条件:线性表L已存在。操作结果:返回线性表L结点的个数。LNodeIsLast(LinkListL);初始条件:线性表L已存在。操作结果:返回线性表L的最后一个结点(尾结点)。LNodeNewLNode(ElemTypeX);构造一个数据域为X的新结点LNodeFindPrefious(ElemTypeX,LinkListL);初始条件:线性表L已存在。操作结果:在线性表L中寻找值为X的结点,若找到则返回该结点的前驱,否则返回NULL。voidListDelete(LNo
6、dePre);初始条件:线性表L中结点P已找到。操作结果:删除该结点。链表的结点结构: ┌──┬──┐ │data│next│ └──┴──┘data域--存放结点值的数据域18next域--存放结点的直接后继的地址(位置)的指针域(链域)此题定义系数和指数结构如下:coefexpnext//------------------------------------------线性表的单链表存储结构-----------------------------------//TypedefstructLnode{ElemTypedata;//结点的数据域StructL
7、node*next;//结点的指针域}Lnode,*LinkList;//----------------------基本操作---------------------------------------------------------------------------//InitArray(&A,n,bound1,...,boundn)操作结果:若维数n和各维长度合法则构造相应数组A。DestroyArray(&A)初始条件:数组A已经存在。操作结果:销毁数组A。Value(A,&e,index1,...,indexn)初始条件:A是n维数组,e为元素变量,n
8、个下标值。操作结果:若各下标不超界,则e赋值为所指定的A的元素值,并返回OK。Assign(&A,e,index1,...,indexn)初始条件:A是n维数组,e为元素变量,n个下标值。操作结果:若下标不超界,则将e的值赋给A中指定下标的元素。}ADTArray三、详细设计单链表在C语言中是一种非常常见的结构,而在C++中的实现却又有不同,在一些地方更简单,更严密。同时,由于C++的一些特点,使它具有C语言所不具有的“安全化”,所以本程序用C++。有了链表特定的数据类型Mulpoly,接下来就需要建立这个链表。这里我们自定义一个构造函数CreatePoly来构造链表
9、。首先定义一个CreatePoly型的指针变量head作为头结点,存储多项式的信息(项数),为head分配存储空间建立一个头结点并为其数据域赋值,分配存储空间用c++语言中的malloc来实现;这时输入多项式的项数num,把它赋值给head的coef域,exp域赋值为1,此时再定义一个CreatePoly型的指针变量r指向head头结点。还要用类似的算法建立多项式的其它结点,剩余节点的插入用一个while循环来实现,while循环中的控制变量i从大于0的数n开始递增,直到到达num,此时while循环结束。While循环的循环体由两部分组成,第一部分
此文档下载收益归作者所有