数据结构课程设计报告一元多项式相加 下载本文

内容发布更新时间 : 2024/5/18 6:59:10星期一 下面是文章的全部内容请认真阅读。

数据结构课程设计报告

题目: 一元多项式相加

学号: :

指导老师:

时间: 2011年10月18日星期二

评语:

程序建立的过程及步骤:

1首先建立一个定义多项式的结构体duoxiangshi,其中包括一个指数(int型),一个系数(float型),还有一个指向下一项的指针,具体编译代码如下: typedef struct duoxiangshi//定义一个多项式 {

float coef;//多项式系数 int exp;//多项式指数 struct duoxiangshi *next;

};

2在定义一个函数(1),用来指导用户输入程序运行时所需要的必须得数据,两个一元多项式的项数、系数、指数。具体的代码如下:

void creatDuoX(Polynomial &Px,int n)//定义一个多项式函数

{

initDuoX(Px);

duoxiangshi *p,*q; p=Px;

for(int i=1;i<=n;i++) {

q=new duoxiangshi;

cout<<\第\项的系数:\ cin>>q->coef;//输入系数 cout<<\第\项的指数:\ cin>>q->exp;//输入指数 q->next=NULL; p->next=q; p=q; }

}

3定义一个计算合并后的多项式的项数的函数(2),此函数的主要作用是用来最后输出合并后的多项式的时候起到作用。具体代码如下: int lengthDuoX(Polynomial &Px)//计算多项式项数的函数,返回值是这个合并后的多项式的项数 {

duoxiangshi *p;

int count;//定义一个变量,用来计算多项式的长度 p=Px->next; count=0;

while(p!=NULL) {p=p->next;

count++;//自加 最后得出总项数 并返回 }

return count; }

4定义一个输出合并后的多项式的函数(3),主要作用为主函数调用后可以输出一元多项式,具体代码如下:

void outputDuoX(Polynomial &Px)//输出合并后的多项式 { duoxiangshi *p; p=Px->next; int i;

for(i=0;i

{cout<coef<<\ p=p->next; }

cout<<\}

5, 最重要的核心部分,程序的逻辑中心,让两个多项式相加,其中要考虑的情况如下 一:两个多项式A、B 都为0

二:其中一个多项式A 为0,B不为0 三:其中一个多项式B为0,A不为0 四:A与B 都不为0

而在程序中我将二与三这两种情况,通过IF语句将其嵌到四的情况中,这样可以节省代码的复杂度。(也可以用if eals if eals if eals 这种方法将4中情况并列列出)具体代码 如下:

duoxiangshi * addDuoX(Polynomial &Pa,Polynomial &Pb)//关键部分,A与B相加 { duoxiangshi *p,*q; duoxiangshi *prep; duoxiangshi *u; p=Pa->next; q=Pb->next; prep=Pa;

while (p&&q)//A与B都不等于0

{if(p->expexp)//A的指数小于B的指数 {prep=p; p=p->next; }

else if(p->exp > q->exp)//A的指数大的话 {u=q->next; q->next=p; prep->next=q; prep=q; q=u; }

else//A与B的指数相等的话 {p->coef=p->coef+q->coef;

if(p->coef==0)//A与B的指数相等的话,且其中A的系数为0 {duoxiangshi *temp1;