数据结构课程设计—一元多项式加法、减法、乘法运算的实现

更新时间:2023-11-24 03:02:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.一元多项式加法、减法、乘法运算的实现 1.1设计内容及要求 1)设计内容

(1)使用顺序存储结构实现多项式加、减、乘运算。 例如:

f(x)?8x?5x?10x?32x?x?106542,g(x)?7x5?10x4?20x3?10x2?x

求和结果:f(x)?g(x)?8x6?12x5?20x3?22x2?10 (2)使用链式存储结构实现多项式加、减、乘运算,

f(x)?100x100?5x50?30x10?10,g(x)?150x90?5x50?40x20?20x10?3x

求和结果:f(x)?g(x)?100x100?150x90?40x20?10x10?3x?10 2)设计要求

(1)用C语言编程实现上述实验内容中的结构定义和算法。

(2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。 (3)用switch语句设计如下选择式菜单。

***************数据结构综合性实验**************** *******一、多项式的加法、减法、乘法运算********** ******* 1.多项式创建 ********** ******* 2.多项式相加 ********** ******* 3.多项式相减 **********

******* 4.多项式相乘 ********** ******* 5.清空多项式 ********** ******* 0.退出系统 ********** ******* 请选择(0—5) ********** ************************************************* *请选择(0-5):

1.2数据结构设计

根据下面给出的存储结构定义:

1

#define MAXSIZE 20 //定义线性表最大容量 //定义多项式项数据类型 typedef struct {

float coef; //系数 int expn; //指数

}term,elemType;

typedef struct {

term terms[MAXSIZE]; //线性表中数组元素

int last; //指向线性表中最后一个元素位置

}SeqList;

typedef SeqList polynomial;

1.3基本操作函数说明 polynomial*Init_Polynomial(); //初始化空的多项式

int PloynStatus(polynomial*p) //判断多项式的状态

int Location_Element(polynomial*p,term x) 在多项式p中查找与x项指数相同的项是否存在 int Insert_ElementByOrder(polynomial*p,term x) //在多项式p中插入一个指数项x int CreatePolyn(polynomial*P,int m)

//输入m项系数和指数,建立表示一元多项式的有序表p char compare(term term1,term term2) //比较指数项term1和指数项term2

polynomial*addPloyn(polynomial*p1,polynomial*p2)

2

//将多项式p1和多项式p2相加,生成一个新的多项式 polynomial*subStractPloyn(polynomial*p1,polynomial*p2) //多项式p1和多项式p2相减,生成一个新的多项式 polynomial*mulitPloyn(polynomial*p1,polynomial*p2) //多项式p1和多项式p2相乘,生成一个新的多项式 void printPloyn(polynomial*p) //输出在顺序存储结构的多项式p

1.4程序源代码

#include #include #include #define NULL 0

#define MAXSIZE 20

typedef struct {

float coef; int expn; }term,elemType;

typedef struct {

term terms[MAXSIZE]; int last; }SeqList;

typedef SeqList polynomial; void printPloyn(polynomial*p);

int PloynStatus(polynomial*p) {

if(p==NULL) {

return -1; }

else if(p->last==-1) {

return 0; }

3

else {

return 1; } }

polynomial*Init_Polynomial() {

polynomial*P;

P=new polynomial; if(P!=NULL) {

P->last=-1; return P; } else {

return NULL; } }

void Reset_Polynomial(polynomial*p) {

if(PloynStatus(p)==1) {

p->last=-1; } }

int Location_Element(polynomial*p,term x) {

int i=0;

if(PloynStatus(p)==-1) return 0;

while(i<=p->last && p->terms[i].expn!=x.expn) {

i++; }

if(i>p->last) {

return 0; } else {

return 1; } }

4

int Insert_ElementByOrder(polynomial*p,term x) {

int j;

if(PloynStatus(p)==-1) return 0;

if(p->last==MAXSIZE-1) {

cout<<\ return 0; }

j=p->last;

while(p->terms[j].expn=0) {

p->terms[j+1]=p->terms[j]; j--; }

p->terms[j+1]=x; p->last++; return 1; }

int CreatePolyn(polynomial*P,int m) {

float coef; int expn; term x;

if(PloynStatus(P)==-1) return 0; if(m>MAXSIZE) {

printf(\顺序表溢出\\n\ return 0; } else {

printf(\请依次输入%d对系数和指数...\\n\ for(int i=0;i

scanf(\ x.coef=coef; x.expn=expn;

if(!Location_Element(P,x)) {

Insert_ElementByOrder(P,x); }

5

本文来源:https://www.bwwdw.com/article/hv9t.html

Top