2022年多项式的输入输出设计报告 .pdf
《2022年多项式的输入输出设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年多项式的输入输出设计报告 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、江 西 理 工 大 学数 据 结 构 课 程 设 计 报 告选题:一元多项式的计算猴子选大王班级:信息安全 101 学号: 16 姓名:熊剑时间: 2011 年 12 月 25 日2012 年 1 月 6 日指导教师:罗会兰涂燕琼曾珽2012 年 01 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 一、 需求分析建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式的加减运算并输出结
2、果二、 概要设计存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空间,只存储多项式中系数非零的项。 链表中的每一个结点存放多项式的一个系数非零项,它包含三个域, 分别存放该项的系数、 指数以及指向下一个多项式项结点的指针。创建一元多项式链表, 对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。基本算法:1、输入输出(1)功能:将要进行运算的多项式输入输出。(2)数据流入:要输入的多项式的系数与指数。(3)数据流出:合并同类项后的多项式。(4)程序流程图:多项式输入流程图如图1 所示。(5)测试要点:输入的多项式是否正确,若输入错误则重新输入开始
3、申请结点空间输入多项式的项数输入多项式各项的系数 x, 指数 y 输出已输入的多项式合并同类项结束否是是否输入正确图表 1名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 2 、多项式的加法(1)功能:将两多项式相加。(2)数据流入:输入函数。(3)数据流出:多项式相加后的结果。(4)程序流程图:多项式的加法流程图如图2 所示。(5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。图表 2 开始定义存储结果的空链
4、r是否输出存储多项式的和的链r 结束是否同指数项系数相加后存入r直接把p 中各项存入r直接把q 中各项存入 r 存储多项式 2的空链 Q是否为空存储多项式1 的空链 P是否为空合并同类项名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - 3 、多项式的减法(1)功能:将两多项式相减。(2)数据流入:调用输入函数。(3)数据流出:多项式相减后的结果。(4)程序流程图:多项式的减法流程图如图3 所示。(5)测试要点:两多项式是否为空,
5、为空则提示重新输入,否则,进行运算。开始定义存储结果的空链r是否输出存储多项式的和的链r 结束是否同指数项系数相加后存入r把 p 中各项系数改变符号后存入直接把 q 中各项存入 r 存储多项式 2的空链 Q是否为空存储多项式1 的空链 P是否为空合并同类项图表 3名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 三、 详细设计#include #include /动态内存分配typedef struct Polynomial /
6、 C中用于定义结构体类型多项式 float coef; /系数 int expn; /指数 struct Polynomial *next; /指针域*Polyn,Polynomial;/Polyn为结点指针类型void Insert(Polyn p,Polyn head) if(p-coef=0) free(p); /系数为 0 的话释放结点 else / head指针作为头指针 Polyn q1,q2; /p首先指向头结点 q1=head;q2=head-next; /第一次 q2 的值为 null while(q2&p-expnexpn) / 查找插入位置比较 q1=q2; /较大的 q
7、2 的值赋给前一个位置的q1 q2=q2-next; /q2指针后移 if(q2&p-expn=q2-expn) /将指数相同相合并 q2-coef+=p-coef; free(p); if(!q2-coef) /系数为 0 的话释放结点 q1-next=q2-next; /q1下一个位置就是q2 而 q2 及 q2 的下一个位置指向零 free(q2); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - else / p指向的
8、指数大于q2 时 p-next=q2; /把 q2 的值也就是开始null的那个赋给p 的下一个节点 q1-next=p; /把 p 指针指向的值赋给q2 /Insert Polyn CreatePolyn(Polyn head,int m)/建立一个头指针为head、项数为m的一元多项式 int i; Polyn p; p=head=(Polyn)malloc(sizeof(struct Polynomial);/给头结点申请存储空间并强制转换 head-next=NULL; /将头节点的下一个位置置空 for(i=0;icoef,&p-expn); /当节点只有头结点和第一个节点时 p 指
9、向第一个节点 Insert(p,head); / 每次循环到此都要调用Insert函数插入结点 return head; / 返回头指针判断是那个多项式/CreatePolyn void DestroyPolyn(Polyn p) /销毁多项式p Polyn q1,q2; q1=p-next; q2=q1-next; while(q1-next) /q2指针指向空时不执行操作 free(q1); /释放 q1 指向的存储空间名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共
10、13 页 - - - - - - - - - q1=q2; /指针后移 q2=q2-next; /位置不释放 void PrintPolyn(Polyn P) / 打印多项式 Polyn q=P-next; /第一个节点的值赋给q int flag=1; /项数计数器 if(!q) /若多项式为空,输出0 putchar(0); printf(n); return; while (q) if(q-coef0&flag!=1) putchar(+); /系数大于 0 且不是第一项 if(q-coef!=1&q-coef!=-1)/系数非 1 或-1 的普通情况 printf(%g,q-coef)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年多项式的输入输出设计报告 2022 多项式 输入输出 设计 报告
限制150内