zoukankan      html  css  js  c++  java
  • PHP数据结构之四 一元多项式的相加PHP单链实现

    <?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>";
    ?>
  • 相关阅读:
    Generator函数执行器-co函数库源码解析
    前端解读Webview
    javascript设计模式详解之策略模式
    javascript设计模式详解之命令模式
    【VBA】标准Sub/Function定义,带ScreenUpdating、On Error GoTo
    【VBA】全局数组定义
    【VBA】全局常量定义
    调试Java代码(Eclipse)汇总
    为Eclipse添加反编译插件,更好的调试
    Eclipse图标含义
  • 原文地址:https://www.cnblogs.com/crystaltu/p/6408520.html
Copyright © 2011-2022 走看看