毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

数据结构一元多项式计算

更新时间:2008-7-4:  来源:毕业论文
数据结构一元多项式计算

1  课程设计的目的

(1)掌握算法的编写方法。

(2)掌握类C语言的算法转换成C程序并上机调试的基本方法。

(3)设计一个C语言程序,该程序具有能够按照指数降序排列建立并输出多项式,

 完成两个多项式的相加、相减,并将结果输入的功能。

 

2  设计方案论证

2.1 问题描述

C语言编写一段程序,该程序的功能相当于一个一元多项式计算器。它能够实现按照指数降序排列建立并输出多项式,并且能够完成两个多项式的相加、相减的运算和将其结果输入的功能。

 

2.2 数据结构设计

此程序的数据结构是选择用带表头结点的单链表存储多项式。虽然一元多项式可以用顺序和链式两种存储结构表示,但顺序结构的最大长度很难确定。比如当多项式的系数较大时,此时就会浪费了巨大的存储空间,所以应该选择用链式存储结构来存储一元多项式。单链表的结构体可以用来存储多项式的系数,指数,下一个指针3个元属,这样便于实现任意多项式的加法,减法运算。

2.3 设计思路及算法设计

2.3.1功能模块图 如图1所示。 若图片无法显示请联系QQ752018766,本论文免费,转发请注明源于www.lwfree.cn

1 功能模块图

 

 

2.3.2功能模块图思路设计

(1)一元多项式的建立

输入多项式采用头插法的方式,输入多项式中一个项的系数和指数,就产生一个新的节点,建立起它的右指针,并用头节点指向它;为了判断一个多项式是否输入结束,定义一个结束标志,当输入非0时就继续,当输入0时,就结束一个多项式的输入。

(2)显示一元多项式

如果系数是大于0的话就输出+系数x^指数的形式;如果系数是小于0的话就输出系数x^指数的形式;如果指数为0的话,直接输出系数;如果系数是1的话就直接输出+x;如果系数是-1的话就直接输出-x

(3)一元多项式加法运算

它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相加;相加的和不为0的话,用头插法建立一个新的节点。p的指数小于q的指数的话,就应该复制q节点到多项式中。p的指数大于q的指数的话,就应该复制p节点到多项式中。当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二多项式用新节点产生。

(4)一元多项式减法运算

它从两个多项式的头部开始,两个多项式的某一项都不为空时,如果指数相等的话,系数就应该相减;相加的和不为0的话,用头插法建立一个新的节点。

p的指数小于q的指数的话,就应该复制q节点到多项式中。p的指数大于q的指数的话,就应该复制p节点到多项式中,并且建立的节点的系数为原来的相反数;当第二个多项式空,第一个多项式不为空时,将第一个多项式用新节点产生。当第一个多项式空,第二个多项式不为空时,将第二个多项式用新节点产生,并且建立的节点的系数为原来的相反数。

(5)帮助

     提供正确的输入多项式的方法,以及程序中多项式是如何表示的。

 

2.3.3 算法设计

 

(1)结构体的定义

     typedef struct pnode
{int coef;
 int exp;
 struct pnode *next;
 }pnode;

 

2)一元多项式的输入                              

     pnode * creat()
 {

 head=(pnode *)malloc(sizeof(pnode));
 rear=head;
 while(n!=0)
 

 

 

{s=(pnode *)malloc(sizeof(pnode));

 s->coef=n;
 s->exp=m;
 s->next=NULL;
 rear->next=s;
 rear=s;

     }
 head=head->next;
 return head;
 }

 

3)显示一元多项式

void display(pnode *head)
     {;int one_time=1; p=head;
     while(p!=NULL)
     {
      if(one_time==1)
      {if(p->exp==0)
       printf("%d",p->coef);
       else if(p->coef==1||p->coef==-1)
       printf("x^%d",p->exp);
       else if(p->coef>0)
       printf
       one_time=0;
       }
      else{
       if(p->exp==0)
      {if(p->coef>0)
       printf("+%d",p->coef);
       }
       else if(p->coef==1)
       printf("+x^%d",p->exp);
        else if(p->coef==-1)
       printf("x^%d",p->exp);
       else if(p->coef>0)
       printf("+%dx^%d",p->coef,p->exp);
       else if(p->coef<0)71

[1] [2] [3] [4] [5] [6] [7] 下一页

数据结构一元多项式计算下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。