PHP数据结构

<?php
     //冒泡排序(优化)
      $a = [9, 86, 4, 3, 2, 62, 3, 819, 746, 32];
        print_r($a);
        echo "<br/>";
        for ($b = 0; $b < count($a) - 1; $b++) {
            for ($c = 0; $c < sizeof($a) - 1 - $b; $c++) {
               $flag=true; //记录每一趟需要排序否?
                if ($a[$c] > $a[$c + 1]) {
                    $temp = $a[$c];
                    $a[$c] = $a[$c + 1];
                    $a[$c + 1] = $temp;
                    $flag = false;
                }
                if ($flag) {
                    bresk;
                }
            }
        }
        print_r($a);
?>
//去除双数
<?php
      $a = [9, 86, 4, 3, 2, 62, 3, 819, 746, 32];
        print_r($a);
        echo "<br/>";
        foreach ($a as $b=>$x) {
        if($x%2==0){
            unset($a[$b]);
        }
        }
        print_r($a);
?>

<?php
/**双向链表
 * 链表元素结点类
 */
class Node{
     public $pre=null;
     public $next=null;
     public $data=null;
     public function  __Construct($data){
         $this->data=$data;
     }
}

/**
 * 双向链表类
 */
class DoubleLink{
    private $head;
    private $tail;
    private $len;
    
    public function __Construct(){
     $newNode=$newNode=new Node(null);
     $this->tail=$this->head=$newNode;
     $this->len=0;
    }
    
    public function addNode($obj,$search=null){
        $newNode=new Node($obj);
        $tmp=$this->searchNode($search);
        if($tmp!=null){
            $newNode->pre=$tmp->pre;
            $newNode->next=$tmp;
            $tmp->pre=$obj;
            $newNode->pre->next=$newNode;
        }else{
            $newNode->pre=$this->tail;
            $this->tail->next=$newNode;
            $this->tail=$newNode;
            
        }
        $this->len++;
    }
    
    public function delNode($obj){
          $tmp=$this->searchNode($obj);
          if(null!=$tmp){
              if($tmp->next!=null){
                $tmp->pre->next=$tmp->next;
                $tmp->next->pre=$tmp->pre;
              }else{
                  $tmp->pre->next=null;
              }
              unset($tmp);
              $this->len--;
          }
    }
    
    public function setNode($obj,$search){
        $tmp=$this->searchNode($obj);
        if(null!=$tmp){
            $tmp->data=$search;
            
        }
    }
    
    public function searchNode($obj){
        $tmp=$this->head;
        while($tmp->next!=null){
            $tmp=$tmp->next;
            if($tmp->data===$obj){
                return $tmp;
            }
        }
        return null;
    }
    
    public function show(){
        $tmp=$this->head;
        while($tmp->next!==null){
            $tmp=$tmp->next;
            echo $tmp->data;
        }
        echo("<br/>");
         $tmp=$this->tail;
        while($tmp->pre!==null){
            echo $tmp->data;
            $tmp=$tmp->pre;
            
        }
    }
}


$myList = new DoubleLink();
$myList->addNode("A");
$myList->addNode("B");
$myList->addNode("C");
$myList->addNode("D");
$myList->addNode("E");
$myList->addNode('F');
$myList->delNode('F');
$myList->setNode("B",'G');
$myList->show();

?>

<?php
   //升序(小顶堆)
   $heap=new SplminHeap();
   $heap->insert([98,98]);
   $heap->insert([98,99]);
   $heap->insert([98,91]);

   var_export($heap->extract());
   echo "-->";
   var_export($heap->extract());
   echo "-->";
   var_export($heap->extract());
?>
<?php
   //降序,大顶堆
   $heap=new SplmaxHeap();
   $heap->insert([98,98]);
   $heap->insert([98,99]);
   $heap->insert([98,91]);

   var_export($heap->extract());
   echo "-->";
   var_export($heap->extract());
   echo "-->";
   var_export($heap->extract());
?>
posted @ 2021-07-15 17:56  Juff  阅读(113)  评论(0)    收藏  举报