资源描述:
《多项式加法的链表设计与实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验名称实验二多项式加法的链表设计与实现实验方案实验成绩实验日期2012-03-26实验室信息系统设计与仿真室I实验操作实验台号班级姓名实验结果一、实验目的1、掌握链表的灵活运用;2、学习链表初始化和建立一个新的链表;3、知道怎样去实现链表删除结点操作与插入结点;4、理解链表的基本操作(包括数据域数据的相加)并能灵活运用。二、实验任务1、设计一个一元多项式的简单计算器,其基本功能有:①输入并建立多项式;②输出多项式;③多项式相加。可利用单链表实现之。2、运用单链表来存储多项式,并且结果链表要用原来的链表空间。用C语言编
2、程实现实验任务要求。三、实验设计方案1.用单链表存储多项式的结点结构体设计typedefstructpolynode/*用单链表存储多项式的结点结构*/{intcoef;/*多项式的系数*/intexp;/*指数*/structpolynode*next;/*next是structpolynode类型中的一个成员,它又指向structpolynode类型的数据,以此建立链表*/}node;/*若定为"node,*list;",意即node*与list同为结构指针类型*/2.自定义函数设计node*first=0;int
3、xs=1,zs;while(1){printf("请输入第%d项系数:",i);scanf("%d",&xs);if(xs==0)break;printf("请输入第%d项指数:",i);scanf("%d",&zs);p1=(node*)malloc(sizeof(node));p1->coef=xs;p1->exp=zs;p1->next=first1;first1=p1;i++;}(2)多项式加法思路:以多项式1为基准,依次取出多项式2中的每一项与多项式1进行指数比较,生成和多项式的结点。(3)输出和多项
4、式p=first;if(p!=NULL)//显示第1项printf("%dX%d",p->coef,p->exp);p=p->next;while(p!=NULL){if(p->zhishu>0)//符号位printf("+");printf("%d",p->coef);//系数printf("X%d",p->exp);p=p->next;}printf("");(4)依照上述思路,请重点思考如何编程完成多项式加法程序;进一步,考虑链表依指数大小升序排列,考虑如何编程实现两个有序多项式链表的加法。1.主函数设计vo
5、idmain(){Ploy*pa,*pb;freopen("in.txt","r",stdin);pa=input();//读入多项式1//output(pa);//输出和多项式pb=input();//读入多项式2//output(pb);//输出和多项式pa=add(pa,pb);//两个多项式相加output(pa);//输出和多项式}一、测试1、测试数据2、测试结果一、总结与讨论(可针对实验设计谈体会、谈改进、谈设想,展示你的概括、归纳和创新思维能力,看重的不是你的对与错,而是鼓励你思考和创造!)附:程序模块的
6、源代码源代码:#include#include#include#include#defineLENsizeof(node)typedefstructpolynode/*用单链表存储多项式的结点结构*/{intcoef;/*多项式的系数*/intexp;/*指数*/structpolynode*next;/*next是structpolynode类型中的一个成员,它又指向structpolynode类型的数据,以此建立链表*/}node;/*若定为
7、"node,*list;",意即node*与list同为结构指针类型*/node*create(void)/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/{node*h,*r,*s;intc,e;h=(node*)malloc(LEN);/*建立多项式的头结点,为头结点分配存储空间*/r=h;/*r指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/printf("coef:");scanf("%d",&c);/*输入系数*/printf("exp:");scanf("%d",&e);
8、/*输入指针*/while(c!=0)/*输入系数为0时,表示多项式的输入结束*/{s=(node*)malloc(LEN);/*申请新结点*/s->coef=c;/*申请新结点后赋值*/s->exp=e;/*申请新结点后赋值*/r->next=s;/*做尾插,插入新结点*/r=s;/*r始终指向单链表的表尾*/printf("c