N项多项式乘法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计(论文)
题目名称n元多项式乘法
课程名称数据结构课程设计
学生姓名
学号
系、专业信息工程系、信息类
指导教师
2012年12 月23 日
摘要
功能:完成两个n元多项式作乘法,给出明确的等式形式。
分步实施:
1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2.完成最低要求:建立一个文件,实现两个一元二次多项式作乘法。
3.进一步要求:实现三元二次多项式的乘法。有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
1 问题描述
完成两个n元多项式作乘法,给出明确的等式形式。
2 需求分析
1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2)完成最低要求:建立一个文件,实现两个一元二次多项式作乘法。
3) 进一步要求:实现三元二次多项式的乘法。有兴趣的同学可以自己扩充系统功能。
1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
3 概要设计
定义单链表的抽象数据类型:
ADT LinkList{
数据对象:D={ai|ai∈ElemSet,i=1,2,3,…,n>=0}
数据关系:R={
//----------------------------------------线性表的单链表基本操作
------------------------------------------// LinkList InitList(void);
构造一个空的线性表
void DestroyList(LinkList *L);
初始条件:线性表L已存在。操作结果:销毁线性表L。
LinkList MakeEmpty(LinkList L)‘
初始条件:线性表L已存在。操作结果:将线性表L重置为空表。
int IsEmpty(LinkList L);
初始条件:线性表L 已存在。 操作结果:判断线性表是否为空表。 int ListLength(LinkList L);
初始条件:线性表L 已存在。 操作结果:返回线性表L 结点的个数。 LNode IsLast(LinkList L);
初始条件:线性表L 已存在。 操作结果:返回线性表L 的最后一个结点(尾结点)。
LNode NewLNode(ElemType X);
构造一个数据域为X 的新结点
LNode FindPrefious(ElemType X, LinkList L);
初始条件:线性表L 已存在。 操作结果:在线性表L 中寻找值为X 的结点,若找到则返回该结点的前驱,否则返回NULL 。
void ListDelete(LNode Pre);
初始条件:线性表L 中结点P 已找到。 操作结果:删除该结点。 链表的结点结构: ┌──┬──┐ │data│next│ └──┴──┘
data 域--存放结点值的数据域
next 域--存放结点的直接后继的地址(位置)的指针域(链域)
此题定义系数和指数结构如下:
020406080
100
第一季度第三季度东部西部北部
coe f ex
p nex t
//------------------------------------------线性表的单链表存储结构-----------------------------------//
Typedef struct Lnode{
ElemType data;//结点的数据域
Struct Lnode *next;//结点的指针域
}Lnode, *LinkList;
//----------------------基本操作-------------------------------------------------------------------// InitArray(&A, n, bound1, ..., boundn)
操作结果:若维数 n 和各维长度合法则构造相应数组 A 。
DestroyArray(&A)
初始条件:数组 A 已经存在。
操作结果:销毁数组 A。
Value(A, &e, index1, ..., indexn)
初始条件:A 是 n 维数组,e 为元素变量, n 个下标值。
操作结果:若各下标不超界,则e赋值为所指定的A的元素值,并返回OK。Assign(&A, e, index1, ..., indexn)
初始条件:A 是 n 维数组,e 为元素变量,n 个下标值。
操作结果:若下标不超界,则将 e 的值赋给A中指定下标的元素。
} ADT Array
3.1抽象数据类型定义
void DestroyList(LinkList *L);
初始条件:线性表L已存在。操作结果:销毁线性表L。
LinkList MakeEmpty(LinkList L)‘
初始条件:线性表L已存在。操作结果:将线性表L重置为空表。
int IsEmpty(LinkList L);
初始条件:线性表L已存在。操作结果:判断线性表是否为空表。
int ListLength(LinkList L);
初始条件:线性表L已存在。操作结果:返回线性表L结点的个数。
LNode IsLast(LinkList L);
初始条件:线性表L已存在。操作结果:返回线性表L的最后一个结点(尾结点)。
3.2模块划分
1)n元多项式的表示。
2)n元多项式的存储。
3) n元多项式的输出
4 详细设计
4.1数据类型的定义
1)链表型
#include
#include
#include