phpデータ構造のシーケンスチェーンテーブルとチェーン線形テーブルの例

10675 ワード

本明細書の例では、phpデータ構造のシーケンスチェーンテーブルとチェーン線形テーブルについて説明する.皆さんの参考にしてください.具体的には以下の通りです.
チェーンテーブル操作
1、InitList(L):初期化チェーンテーブル2、DestroyList(L):削除接続3、ClearList(L):クリアチェーンテーブル4、ListEmpty(L):空5、ListLength(L):チェーンテーブル長6、getElem(L,i):取り出し要素7、LocateElem(L,e):eがチェーンテーブル中8、PriorElem(L,i):前駆体9、NextElem(L,i):後継10、ListInsert(L,i,e):挿入要素11、ListDelete(L,i,):削除要素
シーヶンスチェーンテーブル操作

list=array();
   $this->size=0;
  }
  public function initList(){
   $this->list=array();
   $this->size=0;
  }
  //    
  public function destoryList(){
   if(isset($this->list)){
     unset($this->list);
    $this->size=0;
   }
  }
  //    
  public function clearList(){
   if(isset($this->list)){
    unset($this->list);
   }
   $this->list=array();
   $this->size=0;
  }
  //        
  public function emptyList(){
   if(isset($this->list)){
     if($this->size=0)
      return TRUE;
    else
     return FALSE;
   }
  }
  //    
  public function lenghtList(){
   if(isset($this->list)){
    return $this->size;
   }
  }
  //   
  public function getElem($i){
   if($i<1||$i>$this->size){
    echo "  
"; exit(); } if(isset($this->list)&&is_array($this->list)){ return $this->list[$i-1]; } } // public function locateElem($e){ if(isset($this->list)&&is_array($this->list)){ for($i=0;$isize;$i++){ if($this->list[$i]==$e){ return $i+1; } } return 0; } } // public function priorElem($i){ if($i<1||$i>$this->size){ echo " "; exit(); } if($i==1){ echo " "; exit(); } if(isset($this->list)&&is_array($this->list)){ return $this->list[$i-2]; } } // public function nextElem($i){ if($i<1||$i>$this->size){ echo " "; exit(); } if($i==$this->size){ echo " "; exit(); } if(isset($this->list)&&is_array($this->list)){ return $this->list[$i]; } } // public function insertList($i,$e){ if($i<1||$i>$this->size+1){ echo " "; exit(); } if(isset($this->list)&&is_array($this->list)){ if($this->size==0){ $this->list[$this->size]=$e; $this->size++; }else{ $this->size++; for($j=$this->size-1;$j>=$i;$j--){ $this->list[$j]=$this->list[$j-1]; } $this->list[$i-1]=$e; } } } // public function deleteLlist($i){ if($i<1||$i>$this->size){ echo " "; exit(); } if(isset($this->list)&&is_array($this->list)){ if($i==$this->size){ unset($this->list[$this->size-1]); }else{ for($j=$i;$jsize;$j++){ $this->list[$j-1]=$this->list[$j]; } unset($this->list[$this->size-1]); } $this->size--; } } // public function printList(){ if(isset($this->list)&&is_array($this->list)){ foreach ($this->list as $value){ echo $value." "; } echo "
"; } } } ?>

チェーンリニアメータ

head="";
   $this->size=0;
   $this->list=array();
  }
  public function initList(){
   $this->head="";
   $this->size=0;
   $this->list=array();
  }
  //    
  public function destoryList(){
   if(isset($this->list)&&isset($this->head)){
    unset($this->list);
    unset($this->head);
   }
  }
  //    
  public function clearList(){
   if(isset($this->list)){
    unset($this->list);
   }
   $this->list=array();
   $this->size=0;
   $this->head="";
  }
  //        
  public function emptyList(){
   if(isset($this->list)){
    if($this->size==0)
      returnTRUE;
    else
      returnFALSE;
   }
  }
  //    
  public function lenghtList(){
   if(isset($this->list)){
    return$this->size;
   }
  }
  //   
  public function getElem($i){
   if($i<1||$i>$this->size){
    echo "  
"; exit(); } if(isset($this->list)&&is_array($this->list)){ $j=1; // $tmp=$this->head; while($i>$j){ if($this->list[$tmp]['next']!=null){ $tmp=$this->list[$tmp]['next']; $j++; } } return $this->list[$tmp]['data']; } } // public function locateElem($e){ if(isset($this->list)&&is_array($this->list)){ $tmp=$this->head; while($this->list[$tmp]['data']!=$e){ if($this->list[$tmp]['next']!=null){ $tmp=$this->list[$tmp]['next']; }else{ returnFALSE; } } return TRUE; } } // public function priorElem($i){ if($i<1||$i>=$this->size){ echo " "; exit(); } if($i==1){ echo " "; exit(); } $tmp=$this->head; $j=1; while($i>$j+1){ if($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } return$this->list[$tmp]['data']; } // public function nextElem($i){ if($i<1||$i>$this->size){ echo " "; exit(); } if($i==$this->size){ echo " "; exit(); } $j=1; $tmp=$this->head; while($i>=$j){ if($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } return$this->list[$tmp]['data']; } // : public function insertList($i,$e){ if(isset($this->list)&&is_array($this->list)){ // if($this->size==0){ $this->head=$this->uuid(); $this->list[$this->head]['data']=$e; $this->list[$this->head]['next']=NULL; $this->size++; }else{ if($i<1||$i>$this->size){ echo" "; exit(); } $j=1; $tmp=$this->head; while($i>$j){ if($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } $find=$tmp; $id=$this->uuid(); if($this->list[$find]['next']==null){ // $this->list[$find]['next']=$id; $this->list[$id]['data']=$e; $this->list[$id]['next']=null; $this->size++; }else{ // $this->list[$id]['next']=$this->list[$find]['next']; $this->list[$find]['next']=$id; $this->list[$id]['data']=$e; $this->size++; } } } } // public function deleteLlist($i){ if($i<1||$i>$this->size){ echo " "; exit(); } if(isset($this->list)&&is_array($this->list)){ if($i==1){ // $this->head=$this->list[$this->head]['next']; }else{ $tmp=$this->head; $j=1; while($i>$j+1){ if($this->list[$tmp]['next']!=null){ $j++; $tmp=$this->list[$tmp]['next']; } } // $find=$tmp; // if($this->list[$find]['next']!=null){ // $delete=$this->list[$find]['next']; $this->list[$find]['next']=$this->list[$delete]['next']; }else{ $this->list[$tmp]['next']=null; } } } } public function traverstList(){ $tmp=$this->head; while($this->list[$tmp]['next']!=NULL){ $this->printList($this->list[$tmp]['data'],TRUE); $tmp=$this->list[$tmp]['next']; } $this->printList($this->list[$tmp]['data'],FALSE); } public function printList($str,$flag){ if($flag){ echo$str."->"; }else { echo$str."
"; } } //uuid public function uuid($prefix = '') { $chars =md5(uniqid(mt_rand(), true)); $uuid = substr($chars,0,8) . '-'; $uuid .=substr($chars,8,4) . '-'; $uuid .=substr($chars,12,4) . '-'; $uuid .=substr($chars,16,4) . '-'; $uuid .= substr($chars,20,12); return $prefix. $uuid; } } ?>

PHPについてもっと兴味のある読者は、「PHPデータ构造とアルゴリズム教程」、「phpプログラム设计アルゴリズム総括」、「php文字列(string)用法総括」、「PHP配列(Array)操作技巧大全」、「PHP常用遍歴アルゴリズムと技巧総括」、「PHP数学演算技巧総括」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.