<?php
/**
*一元多项式的表示和相加
*一元多项式的表示采用单链表的形式
**/
header("content-type:text/html;charset=gb2312");
//该类可以在--PHP数据结构之三 线性表中的单链表的PHP实现--找到
include_once("./SingleLinkedList.class.php");
/**
*一元多项式的相加实现算法:直接相加
*@param SingleLinkedList $a 第一个多项式
*@param SingleLinkedList $b 第二个多项式
*@param SingleLinkedList $c 相加后的多项式
*@return void
**/
function polynomialaddition(&$a,&$b,&$c){
if(!$a->getIsEmpty() && !$b->getIsEmpty()){
$pa=$a->mNext;
$pb=$b->mNext;
while($pa!=null && $pb!=null){
if($pa->mElem['expn'] < $pb->mElem['expn']){
$c->getInsertElem($c->getLength(),$pa->mElem);
$pc=$pa;
$pa=$pa->mNext;
}
if($pa->mElem['expn'] > $pb->mElem['expn']){
$c->getInertElem($c->getLength(),$pb->mElem);
$pc=$pb;
$pb=$pb->mNext;
}
if($pa->mElem['expn'] == $pa->mElem['expn']){
$ccoef=$pa->mElem['coef']+$pb->mElem['coef'];
if(abs($ccoef) < 1.0E-10){
$pa=$pa->mNext;
$pb=$pb->mNext;
}else{
$pa->mElem['coef']=$ccoef;
$c->getInsertElem($c->getLength(),$pa->mElem);
$pa=$pa->mNext;
$pb=$pb->mNext;
}
}
}
if($pa==null){
while($pb!=null){
$c->getInsertElem($c->getLength(),$pb->mElem);
$pb=$pb->mNext;
}
}elseif($pb==null){
while($pa!=null){
$c->getInsertElem($c->getLength(),$pa->mElem);
$pa=$pa->mNext;
}
}
}
}
//coef表示系数
//expn表示指数
$adata=array(
array('coef'=>5,
'expn'=>0,
),
array('coef'=>2,
'expn'=>1,
),
array('coef'=>4,
'expn'=>2,
),
array('coef'=>13,
'expn'=>3,
),
array('coef'=>160,
'expn'=>4,
),
array('coef'=>12,
'expn'=>5
),
array('coef'=>23,
'expn'=>6,
),
array('coef'=>34,
'expn'=>7,
),
array('coef'=>22,
'expn'=>8,
),
);
$bdata=array(
array('coef'=>16,
'expn'=>0,
),
array('coef'=>9,
'expn'=>2,
),
array('coef'=>17,
'expn'=>4,
),
array('coef'=>-12,
'expn'=>5,
),
);
$a=new SingleLinkedList();
$b=new SingleLinkedList();
$c=new SingleLinkedList();
$a->getTailCreateSLL($adata);
$b->getTailCreateSLL($bdata);
polynomialaddition($a,$b,$c);
echo "\$a多项式的数据为:<pre>";
var_dump($a->getAllElem());
echo "</pre>";
echo "\$b多项式的数据为:<pre>";
var_dump($b->getAllElem());
echo "</pre>";
echo "一元多项式相加结果:<pre>";
var_dump($c->getAllElem());
echo "</pre>";
?>

PHP数据结构之四 一元多项式的相加PHP单链实现的更多相关文章

  1. 关于使用静态链表实现一元多项式的相加&&乘积

    一元多项式的相加类似于两条链表的合并 当然前提是链表中的幂指数是按顺序排列的 此题中的链表采用的是升序排列,输出也是按升序输出的 #include<stdio.h> #include< ...

  2. 数据结构 C++ 单链表 一元多项式的相加

    #include <iostream> using namespace std; struct Node { double coe; //系数 int exp; //指数 Node *ne ...

  3. 一道 google曾出过的笔试题:编程实现对数学一元多项式的相加和相乘操作(1)

    数学中一元n次多项式可表示成如下的形式:  Pn(x)=p0+p1x+p2x^2+…+pnx^n     (最多有 n+1 项,n +1 个系数唯一确定她)      (1)请设计一套接口用以表示和操 ...

  4. Python数据结构之四——set(集合)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...

  5. php—Spl库常用数据结构基本用法

    数据结构之一 : 栈 //zhan $stack = new SplStack(); $stack->push('data1'); $stack->push('data2'); echo ...

  6. Java SE教程

    第0讲 开山篇 读前介绍:本文中如下文本格式是超链接,可以点击跳转 >>超链接<< 我的学习目标:基础要坚如磐石   代码要十份规范   笔记要认真详实 一.java内容介绍 ...

  7. Python编程核心内容之一——Function(函数)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 截至上篇随笔<Python数据结构之四--set(集合)>,Python基础知识也介绍好了.接下来准备干 ...

  8. Python编程核心内容 ---- Function(函数)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 截至上篇随笔<Python数据结构之四——set(集合)>,Python基础知识也介绍好了.接下来准备干 ...

  9. 数据结构算法C语言实现(六)---2.4一元多项式的表示及相加

    一.简述 利用链表表示稀疏多项式,并基于之前的一些操作(编程实现上还是有所不同的)组合新的操作实现一元多项式的表示及相加. 二.ADT 抽象数据类型一元多项式的定义 ADT Polyomail{ 数据 ...

随机推荐

  1. Python基础学习(第9天)

    第九课:动态类型 1.在Python中,有一类特殊的对象,是专门用来存储数据的,常见的有数字.字符串.数列.字典等.这些对象是存储在内存中的实体,我们并不能直接接触到它们,在程序中接触的是对象名,是指 ...

  2. Intellij IDEA基于Springboot的远程调试

    简介 本篇博客介绍一下在Intellij IDEA下对Springboot类型的项目的远程调试功能.所谓的远程调试就是服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须 ...

  3. Developing IOS Application with Delphi Xe4 .only for play the toy?

    Recently, i am working on r&d of some keypoint of some app idea. if all thing ok, i will continu ...

  4. I.MX6 U-Boot ping网络

    /********************************************************************* * I.MX6 U-Boot ping网络 * 说明: * ...

  5. WDF - CSS 书写规范

    CSS已经写了很久了,但是感觉代码还是有点乱,不够漂亮.今天抽点时间整理一下手头上正在做的网站样式,顺带做一个自己比较适应的书写规范,以供以后参考.先暂时这样吧,其他以后再完善. 逻辑:大小 → 位置 ...

  6. git自用笔记

    同步远程库:git clone xxx.git [filename] git ls-files: 查看已经添加进暂存区的文件. 在commit前修改一个文件后(假设名为:xxx.file),想撤销时, ...

  7. 真正明白c语言二级指针

    指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的 ...

  8. Linux环境安装nginx

    安装需要以下工具: yum -y install gcc gcc-c++ autoconf automake 模块依赖: yum -y install zlib zlib-devel openssl ...

  9. Spring AOP声明式事务异常回滚

    近日测试用例,发现这样一个现象:在业务代码中,有如下两种情况,比如:throw new RuntimeException("xxxxxxxxxxxx"); 事物回滚throw ne ...

  10. PCBA 的收货要求记录

    PCBA 的收货要求记录 性能 功能性测试 外观 标识 需要可以识别的料号(客户料号或货号) 贴片 元件焊点饱满 元件参数统一 后焊 插件焊盘饱满 插件焊盘不可以有小孔 焊盘不可以有漏铜上锡均匀 体积 ...