<?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. New Concept English three (35)

    27 55 The word justice is usually associated with courts of law. We might say that justice has been ...

  2. Ubuntu語言支持爲灰色修復方法

    Ubuntu語言支持爲灰色修復方法 在Ubuntu12.04中,在下不知爲何將 語言支持 中 應用到整個系統 和 添加語言 這2個按弄成了灰色,導致ibus不能輸入中文,現在唔將修復方法公告天下: 1 ...

  3. 7.usr下重要目录和文件详解

    1./usr下重要目录和文件详解: /usr(存放用户安装的应用软件目录,如MySQL,Apache,这是一个非常重要的目录,类似于Windows下的Program Files目录,用户的很多应用程序 ...

  4. ng 自定义服务

    服务的本质是对象. 创建服务的常见方式:factory(返回对象) service (方法.属性)constant(常量服务) value(变量服务) 1.factoryapp.factory('服务 ...

  5. js实现checkbox组 全选和取消全选

    做后台管理程序时,用到一个checkbox组的全选和取消全选的功能, 主要是逻辑上的坑,理清后大概是: 1.全选点击后,小弟1~4都要选上,点击取消,小弟们也要取消 2.只要有一个小弟取消时,全选要取 ...

  6. ORM版,学生管理系统03

    关于老师信息管理 建立多对多关系 第一种(通过外键建立) 自己写类,自己使其建立关系 缺点: 不能用Django ORM 多对多操作的语法 class Teacher(models.Model): t ...

  7. 迭代器.NET实现—IEnumerable和IEnumerator (foreach实现)

    能用foreach遍历访问的对象需要实现什么接口或声明什么方法的类型? 答案:能用foreach遍历访问的对象必须是集合或数组对象,而这些都是靠实现超级接口IEnumerable或被声明 GetEnu ...

  8. niosii 改变软核之后重新编译方法

    操作系统:Win7 64 bit 开发环境:Quartus II 12.0 (64-Bit)  + Nios II 12.0 Software Build Tools for Eclipse 使用Qu ...

  9. BZOJ4260,LOJ10051 Nikitosh 和异或

    题意 给定一个含 \(N\) 个元素的数组 \(A\),下标从 \(1\) 开始.请找出下面式子的最大值:\((A[l_1]\bigoplus A[l_1+1]\bigoplus -\bigoplus ...

  10. AVAWEB学习笔记 ---- 系列文章

    [JAVAWEB学习笔记]网上商城实战5:后台的功能模块 [JAVAWEB学习笔记]网上商城实战4:订单模块 [JAVAWEB学习笔记]网上商城实战3:购物模块和订单模块 [JAVAWEB学习笔记]网 ...