N项多项式乘法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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={|ai,ai+1 ∈D}

//----------------------------------------线性表的单链表基本操作

------------------------------------------// 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

相关文档
最新文档