




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
数据结构课程设计 第一篇:数据结构课程设计南京航空航天大学金城学院《数据结构》课程设计报告题目:一元多项式的加减乘法运算班级:20100232学号:2010023220姓名:祁博成绩:指导教师:叶延风完成日期:2012年2月18日课程设计的主要内容需求分析1.1课程设计题目用线性表实现一元多项式的加法减法与乘法。1.2课程设计的任务及要求任务:利用所学线性表知识来完成计算器中一元多项式的加法减法与乘法的运算。要求:能自己创建线性表,能自主的进行线性表的有关插入删除操作,并且可以在此基础上实现线性表之间的加减乘除运算。1.3课程设计思想首先要定义一个结构体,其中定义一元多项式的两个参数,系数和指数和链表中的指针域,然后一一罗列每个在主程序中得到的函数,并一一实现,最后在主程序中主要完成用户的输入和相关程序的调用。1.4软件开发的环境VC++6.0。2.程序源代码#include#includetypedefstructnode{//定义节点类型floatcoef;intexpn;structnode*next;}Ployn;voidmenu()//用户选择界面{printf(“************************************n”);printf(“两个一元多项式的相加/相减,相乘:n”);printf(“************************************n”);printf(“请选择操作:n”);printf(“0.退出n”);printf(“1.两个一元多项式相加n”);printf(“2.两个一元多项式相乘n”);printf(“3.两个一元多项式相减n”);}voidinsert(Ployn*head,Ployn*inpt)//查找位置插入新链节程序{Ployn*pre,*now;intsignal=0;pre=head;//pre定义为现在的前一个链节if(pre->next==NULL){pre->next=inpt;}else{now=pre->next;while(signal==0){if(inpt->expn>now->expn)//当新链节小于现在的连接时向后移一个链节{if(now->next==NULL){now->next=inpt;signal=1;}else{pre=now;now=pre->next;}}elseif(inpt->expnexpn)//如果发现比现在的链节大了就插入到这个连接的前面{inpt->next=now;pre->next=inpt;signal=1;}else{now->coef=now->coef+inpt->coef;signal=1;free(inpt);//与当前链节相等指数if(now->coef==0){pre->next=now->next;free(now);}}}}}Ployn*creat(charch)//输入多项式{Ployn*head,*inpt;floatx;inty;head=(Ployn*)malloc(sizeof(Ployn));//创建链表头head->next=NULL;printf(“请输入一元多项式%c:(格式是:系数指数;以00结束!)n”,ch);scanf(“%f%d”,&x,&y);while(x!=0){inpt=(Ployn*)malloc(sizeof(Ployn));//创建新链节inpt->coef=x;inpt->expn=y;inpt->next=NULL;insert(head,inpt);//不然就查找位置并且插入新链节printf(“请输入一元多项式%c的下一项:(以00结束!)n”,ch);scanf(“%f%d”,&x,&y);}returnhead;}Ployn*addPloyn(Ployn*head,Ployn*pre)//多项式相加{Ployn*inpt;intflag=0;while(flag==0){if(pre->next==NULL)flag=1;//当现在指向空时跳出循环else{pre=pre->next;inpt=(Ployn*)malloc(sizeof(Ployn));//创建新链节inpt->coef=pre->coef;inpt->expn=pre->expn;inpt->next=NULL;insert(head,inpt);}//否则把当前“g(x)”的链节插入到“y(x)”中}returnhead;}Ployn*minusPloyn(Ployn*head,Ployn*pre)//多项式相加{Ployn*inpt;intflag=0;while(flag==0){if(pre->next==NULL)flag=1;//

映雁****魔王
实名认证
内容提供者


最近下载