资源描述:
《数据结构课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、编号课程设计题目1、一元稀疏多项式计算器2、模拟浏览器操作程序3、背包问题的求解4、八皇后问题二级学院计算机科学与工程学院专业计算机科学与技术班级2011级37-3班学生姓名XX学号XXXXXXXXXX指导教师XXXXX评阅教师时间1、一元稀疏多项式计算器【实验内容】一元稀疏多项式计算器。【问题描述】设计一个一元稀疏多项式简单计算器。【需求分析】其基本功能包括:(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b;
2、(4)多项式a和b相减,建立多项式a-b;(5)计算多项式在x处的值;(6)计算器的仿真界面(选做);【概要设计】-=ADT=-{voidinput(Jd*ha,Jd*hb);//输入两个多项式voidsort(Jd*h);//用冒泡排序法对一个多项式进行降序排序voidsum(Jd*ha,Jd*hb);//多项式求和voidminus(Jd*ha,Jd*hb);//多项式相减voidoutput(Jd*h);//输出多项式voidoperate(Jd*ha,Jd*hb);//对多项式进行操作intqiuzhi(intx,Jd*ha);//计算多项式在x处的值voidmain();主函
3、数}【存储结构】typedefstructnode/*定义多项式每一项*/{inte;//e为指数floatc;//c为系数structnode*next;//next指向下一项}dnode;【流程图】1.dnode*creat()//多项式的创建,即输入两个多项式hwhile(项数next=h->next;h->next=p;继续输入returnh;2.voidsort(dnode*h)//采用冒泡法对链表每一项重新排序//while(p->next!=NULL)p=p->next;//寻找尾结点pi=p;指向最后一次交换的位置,初值为表尾wh
4、ile(pi!=h->next)//外层循环,比较趟数for(p=h->next;p!=pi;p=p->next)内层循环,前后两两相比swap(p,q);pl=p;//调用交换函数pi=pl;3.dnode*operate(dnode*a,dnode*b)//稀疏多项式计算//while(p&&q)比较对应两项的指数x=p->c+q->c;if(fabs(x)<1e-5)p=p->next;q=q->next;if(x!=0)将和链接到新的链表中elseif(p->e>q->e)p链接到新的链表中,p后移,q不动elseif(p->ee)p链接到新的链表中,q后移,p不动++
5、c->c;if(q!=NULL)t->next=q;++c->c;if(p!=NULL)t->next=p;++c->c;4.floatqiuzhi(intx,dnode*h)//求多项式在x处的值if(p==NULL)return0;while(p)if(p->e==0)sum+=p->c;elsesum+=(p->c)*(pow(x,p->e));p=p->next;returnsum;【详细设计】源代码如下:#include#include#include#defineNULL0typedefstructnode/*定义多
6、项式每一项*/{inte;//e为指数floatc;//c为系数structnode*next;//next指向下一项}dnode;dnode*creat()/*用链表存放多项式*/{//多项式的创建,即输入两个多项式dnode*h,*p;inte,i,n;//n为多项式的项数floatc;//c为多项式的系数h=(dnode*)malloc(sizeof(dnode));//分配头节点h->next=NULL;do//当n为0或小于1时,则重新输入{printf("请输入多项式的项数n:");scanf("%d",&n);}while(n<1);for(i=1;i<=n;i++)//
7、输入各项的系数c和指数e{printf("请输入第%d项的系数c和指数e:",i);scanf("%f%d",&c,&e);p=(dnode*)malloc(sizeof(dnode));//创建新结点p->c=c;p->e=e;//将值传给data域p->next=h->next;//用头插法建立链表h->next=p;}returnh;//返回头结点}voidswap(dnode*p,dnode*q)/*交换p,q指针所指的指数和系数*/{