| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 两个多项式的相加操作 C语言(链式存储结构) -> 正文阅读 |
|
[数据结构与算法]两个多项式的相加操作 C语言(链式存储结构) |
内容: ? ? ? ?完成两个多项式的相加操作:已知有两个多项式P(x),Q(x),设计算法实现P(x)+Q(x)运算。而且对加法运算不重新开辟存储空间。要求用链式存储结构。 ? ? ? ?例如:P(x)=5x^3+2x+1,Q(x)=3x^3+x^2-2x-3,其计算输出结果为:8x^3+1x^2-2. 相减操作,以上述为例,则其输出结果为:2x^3-x^2-4x-2 步骤: 1.问题分析和算法设计: ? ? ? 多项式加法:本题的需要求出两个多项式的和,因此需要先使用Init()来初始化一个空链表,再使用CreateFromTail()用来创建一个链表,在此程序中使用尾插法来创建链表。对于两个多项式的加法,使用Polyadd()用来实现两个多项式的相加算法;用Print()输出多项式。 ? ? ? ?两个多项式相加算法的实现,首先是将两个多项式分别用链表进行存放。可以设置两个指针LA1和LB1分别从多项式P(x)和Q(x)的首结点移动,比较LA1和LB1所指结点的指数项,分下面三种情况进行处理: (1)若LA1->exp<LB1->exp,则LA1所指结点为多项式中的一项,LA1指针在原来的基础上向后移动一个位置。 (2)若LA1->exp=LB1->exp,将对应项的系数相加,然后分两种情况处理:如果系数的和为0,则释放LA1和LB1所指向的结点:如果系数项的和不为0,则修改LA1所指向结点的系数域,释放LB1结点。 (3)若LA1->exp>LB1->exp,则LB1所指结点为多项式中的一项,LB1指针在原来的基础上向后移动一个位置。 2.概要设计:
3.程序运行流程图: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图1? 程序流程图 4.源代码(vc++6.0调试通过)
?5.测试结果: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 图2? 测试结果图 ?以上为使用链式存储进行多项式加法的全部分析过程和操作。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:42:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |