数据结构课程设计_两个一元稀疏多项式相加-课程设计_第1页
数据结构课程设计_两个一元稀疏多项式相加-课程设计_第2页
数据结构课程设计_两个一元稀疏多项式相加-课程设计_第3页
数据结构课程设计_两个一元稀疏多项式相加-课程设计_第4页
数据结构课程设计_两个一元稀疏多项式相加-课程设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程设计_两个一元稀疏多项式相加-课程设计1课程设计的目的本课程设计是为了配合?数据结构?课程的开设,通过数据结构的应用、算法的编写、类C语言的算法转换成C程序并用TC上机调试的根本方法,设计出一个对两个一元稀疏多项式进行相加,然后输入结果的程序。程序所能到达的功能:输入两个一元稀疏多项式,能够输出相加后的值。2设计根本要求1.项数的输入形式和输入值的范围:int型, -3276832767 的整数.2.项的输入的格式和输入值的范围:输入格式为:coef,expn          &#

2、160;                    输入值范围:-3276832767 的整数.3.输出的形式:n, c1, e1, c2, e2, cn , en, 其中,n是多项式项数,ci和ei分别是第 i 项的系数和指数,序列按指数降序排列.4. 输入两个一元稀疏多项式,能够输出相加后的值3概要设计主程序的流程(1)输入第一个一元稀疏多项式.(2)输入第二个一元稀疏多项式.(3)对两个一元稀疏多项式进行

3、相加.(4)输出两个一元稀疏多项式相加后的结果.程序模块(1)项数的结构体Term(2)建立一元稀疏多项式函数 CreatPloy(void).(3)对两个一元稀疏多项式相加函数AddPolyn(&Pa,&Pb).(4)输出相加后值的函数PrintPloyn(P). 沈  阳  大  学课程设计说明书                 N各模块之间的调用关系(1)主函数调用Term结

4、构体(2)调用两次GreatPloy函数建立一元稀疏多项式(2)调用AddPolyn函数,对两个多项式进行相加(3)调用PrintPloyn函数,输出结果4详细设计程序流程图(1)主函数流程图输入第一个一元稀疏多项式. CreatPloy(void)输入第二个一元稀疏多项式. CreatPloy(void)对两个一元稀疏多项式进行相加. AddPolyn(&Pa,&Pb)输出两个一元稀疏多项式相加后的结果. PrintPloyn(P)(2)GreatPloy函数流程图 输入项数n head=p1=p2=(struct term*)malloc(LEN);&#

5、160;输入第一项的系数和指数 coef expni=2 to i=n ;i+ p1=(struct term*)malloc(LEN); scanf("%d,%d",&p1->coef,&p1->expn);p1->next=NULL;p2->next=p1;p2=p2->next;return head                  

6、                                           课程设计说明书      

7、;           N(3) PrintPloyn函数流程图int m=0;while(p!=NULL)   m+;printf("c%d=%d,e%d=%dn",m,p->coef,m,p->expn);p=p->next;printf("number=%dn",m); (4) AddPolyn函数流程图int n=0;struct term *p3,*head;while(p1!=NULL&

8、amp;&p2!=NULL)n=n+1; n=1真假比拟p1和p2所指结点指数建立头结点 head比拟p1和p2所指结点指数把指数大的结点连入head把p1或p2剩下的结点连入head中返回head抽象数据类型定义ADT Polynomial数据对象:D=ai|aiTermSet,i=1,2,m,m0TermSet中的每个元素包含一个表示系数的实数和表示指数的整数数据关系:R1=<ai-1,ai>|ai-1,aiD,且ai-1中的指数值>ai中的指数值,i=2,nCreatPloy(void)107数据结构课程设计_两个一元稀疏多项式相加操作结果:输入M项的

9、系数和指数,建立一元多项式P。PrintPloyn(P)初始条件:一元二项式P存在。操作结果:输出一元二项式P。AddPolyn(&Pa,&Pb)初始条件:一元二项式Pa和Pb已存在。操作结果:完成多项式相加运算,即:Pa=Pa+Pb。ADT Polynomial根本操作的算法描述(1)项数的结构体typedef struct/项的表示,多项式作为LinkList的数据元素   int coef;/系数   int expn;/指数Term;(2)输入M项的系数和指数,建立一元多项式Pstatus CreatPolyn(void)

10、0;   scanf(n);    head=p1=p2=(elemtype*)malloc(LEN);    scanf(p1->coef,p1->expn);    for(i=2;i<=n;i+)    p1=(ElemType*)malloc(LEN);    scanf(p1->coef,p1->expn);    p1->next=NULL;

11、0;   p2->next=p1;    p2=p2->next;    /for    return(head);    /CreatPolyn(3)完成多项式相加运算,即:Pa=Pa+Pbstatus AddPolyn(Term p1,Term p2)   n=0;   if(n=1)        if(p1->expn>p2-

12、>expn)           head=p3=p1;p1=p1->next;           /*if*/        else if(p1->expn=p2->expn)           p1->coef=p1->co

13、ef+p2->coef;        if(p1->coef=0)n=0;p1=p1->next;p2=p2->next;                      if(!p1)head=p2;          

14、0;           if(!p2)head=p1;                      if(!p1&&!p2)              &

15、#160;              printf("answer is 0n");                             head=NULL;/*if*/

16、60;                     /*if*/else                      head=p3=p1;p1=p1->next;p2=p2->next; &#

17、160;                    /*else*/               /*else if*/        elsehead=p3=p2;p2=p2->next;   

18、           /*else*/               /*if*/else                      if(p1->expn>p

19、2->expn)               p3->next=p1;p1=p1->next;p3=p3->next;               /*if*/        else if(p1->expn=p2->expn) &#

20、160;             p1->coef=p1->coef+p2->coef;               if(p1->coef=0)                

21、0;     p1=p1->next;p2=p2->next;                      /*if*/    else                &

22、#160;     p3->next=p1;p1=p1->next;p2=p2->next;p3=p3->next;                      /*else*/              

23、/*else if*/        else               p3->next=p2;p2=p2->next;p3=p3->next;/*else*/        /*else*/            &

24、#160;  /*while*/        while(p1!=NULL)需要完整内容的请联系 ,本文免费,      return(head);/*daapolyn*/(4)输出一元二项式Pstatus PrintPolyn(p)   while(p)   m+;printf(cm=p->coef,em=p->expn)/输出c1,e1,c2,e2cm,em,c为系数,e为指数  /while pr

25、int(m);/输出项数/PrintPolyn两个一元稀疏多项式相加_C语言               5测试与分析 5.1 运行方法如下1.根据提示输入第一个一元稀疏多项式的项数和各项数的系数和指数。如图1图1输入显示图2.根据提示输入第二个一元稀疏多项式的项数和各项数的系数和指数。如图23.输出两个一元二项式的相加后的结构,如图3测试数据第一组:输入-7X2和7X2  输出结果为。如图4第二组:输入-7X2和7X2+7

26、输出结果为。如图5第三组:输入5X17+9X8+3X1+7和-9X8+22X7+8X1输出结果为。如图6图6输出结果图通过上述3组实验证明该程序,在正确输入数据的前提条件下,能够按要求输出正确的结果,并按指定的输出格式输出。6心得体会?一元稀疏多项式相加?是我选择的课程设计题目,在这次设计中我学到了很多实际应用的知识。 当得到课程设计指导书时,我认真分析了这一题目及相关要求,然后根据数据结构课所学写出相映算法,再后运用C 语言的知识将算法写成程序,进行修改,最后在Turbo C环境下进行运用,修改。 这次设计让我真切地感受到往往一个细节会决定整个程序的命运。所以在编程过程中理论与实践的结合是十

27、分重要的,细节问题也是不容无视的。7参考文献1.晋良颍.数据结构M.人民邮电出版社,2002.05 34-412.徐孝凯,魏荣.数据结构M.机械工业出版社,1996.07 56-623.徐孝凯.数据结构简明教程.M.清华大学出版社,1995.04 106-1134.陈文博,朱青.数据结构与算法M,机械工业出版社,1996.09 125-127两个一元稀疏多项式相加_C语言源程序清单#include "stdio.h"#define LEN sizeof(struct term)#define NULL 0  struct term  

28、     int coef;/*系数*/    struct term *creatpolyn(void)      struct term *p1,*p2,*head;      int n,i;     scanf("%d",&n);       head=p1=p2=(struct term*)

29、malloc(LEN);       printf("Decline the sequence importation according to the index numbern");/*按指数降序列输入*/printf("Input the format is coef,expn n");/*输入格式是 系数,指数*/       printf("input 1 term: ");  

30、0;        scanf("%d,%d",&p1->coef,&p1->expn);       for(i=2;i<=n;i+)              p1=(struct term*)malloc(LEN);      &

31、#160;       printf("input %d term:",i);              scanf("%d,%d",&p1->coef,&p1->expn);              p1-&

32、gt;next=NULL;              p2->next=p1;              p2=p2->next;       /*for*/  需要完整内容的请联系 ,本文免费,      

33、      n=n+1;           if(n=1)           if(p1->expn>p2->expn)              head=p3=p1;p1=p1->next;  &#

34、160;           /*if*/else if(p1->expn=p2->expn)              p1->coef=p1->coef+p2->coef;           if(p1->coef=0)   

35、              n=0;p1=p1->next;p2=p2->next;                         if(!p1)head=p2;      &

36、#160;                  if(!p2)head=p1;                         if(!p1&&!p2)   

37、;                             printf("answer is 0n");                  

38、;              head=NULL;/*if*/                         /*if*/else          

39、;               head=p3=p1;p1=p1->next;p2=p2->next;                         /*else*/     

40、             /*else if*/else                  head=p3=p2;p2=p2->next;               

41、60;  /*else*/                  /*if*/                  else             

42、60;           if(p1->expn>p2->expn)                  p3->next=p1;p1=p1->next;p3=p3->next;           &#

43、160;      /*if*/           else if(p1->expn=p2->expn)                  p1->coef=p1->coef+p2->coef;       

44、           if(p1->coef=0)                         p1=p1->next;p2=p2->next;         

45、60;               /*if*/                  else                  &

46、#160;      p3->next=p1;p1=p1->next;p2=p2->next;p3=p3->next;                         /*else*/          &

47、#160;       /*else if*/           else                  p3->next=p2;p2=p2->next;p3=p3->next;        &

48、#160;         /*else*/           /*else*/                  /*while*/        while(p1!=NULL) 

49、60;             p3->next=p1;p1=p1->next;p3=p3->next;               /*while*/           while(p2!=NULL)                  p3->next=p2;p2=p2->next;p3=p3->next;          &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论