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>";
    ?>
  • 相关阅读:
    javascript和jquery模拟select框
    CSS使用菱形◆制作气泡对话框(兼容IE6 IE9)
    给网站添加显示在标签页上的小图标
    mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
    推荐一个学习的站
    ubuntu 12.04 安装 nginx+php+mysql web服务器
    PHP解决[function.filegetcontents]: failed to open stream: HTTP request failed!
    svn 操作命令
    svn 端口查看
    php函数parse_url()
  • 原文地址:https://www.cnblogs.com/crystaltu/p/6408520.html
Copyright © 2011-2022 走看看