爱程序网

PHP数据结构练习笔记--线性表

来源: 阅读:

1.类中变量直接调用和$this->调用不同

2.清空数组array方法:

  A unset() 释放资源,这个array变量就没有了

  B $arr=array() 重新赋值,将原有的变量赋值给一个新的空数组

 

线性表类--最终代码

  1 <?php  2     //线性表类  3 class MyList{  4       5     //变量:数组、长度  6     private $arr;  7     private $length;  8       9     //构造函数 10     function __construct() 11     { 12         $this->arr=array(); 13         $this->length=0; 14         echo "初始化:"; 15         //echo $arr; 16     } 17      18     //析构函数 19     function __destruct() 20     { 21         unset($this->arr); 22         echo "释放资源"; 23     } 24      25     //在指定位置插入元素(第二个参数为空时,默认在表最后插入) 26     function ListInsert($data,$poi='-1') 27     { 28         if($poi=='-1') 29         { 30             array_push($this->arr,$data); 31         } 32         else if($poi>0) 33         { 34             array_splice($this->arr,$poi-1,0,$data); 35         } 36     } 37      38     //输出线性表 39     function ListTraverse() 40     { 41         print_r($this->arr); 42     } 43      44     //输出线性表长度 45     function ListLength() 46     { 47         $this->length=count($this->arr); 48         echo "&nbsp;&nbsp;&nbsp;长度:".$this->length; 49     } 50      51     //清空线性表 52     function ListClear() 53     {     54         echo "清空表:"; 55         unset($this->arr); 56         $this->arr=array(); 57     } 58      59     //判断线性表是否为空 60     function ListEmpty() 61     { 62         if($this->length==0) 63         {     64             echo "&nbsp;&nbsp;&nbsp;空"; 65             return false; 66         } 67         else{ 68             echo "&nbsp;&nbsp;&nbsp;非空"; 69             return true; 70         } 71     } 72      73     //获取线性表指定位置的数据 74     function GetElem($poi) 75     {     76         if($poi>$this->length||$poi<=0) 77         { 78             return false; 79         } 80         else{ 81             return $this->arr[$poi-1]; 82         } 83          84     } 85      86     //定位第一个与指定数据相等的元素位置(即下表+1) 87     function LocateElem($data) 88     { 89         if(in_array($data,$this->arr)){ 90             for($i=0;$i<$this->length;$i++) 91             { 92                 if($this->arr[$i]==$data) 93                 { 94                     return $i; 95                     break; 96                 } 97                 else{ 98                     continue; 99                 }100             }101         }102         else{103             return -1;104         }    105     }106     107     //返回指定数据的前驱108     function PriorElem($cur)109     {110         if($this->LocateElem($cur)==0)111         {112             return false;113         }114         else if($this->LocateElem($cur)>0)115         {116             $location=$this->LocateElem($cur);117             return $this->arr[$location-1];118         }119         else if($this->LocateElem($cur)==-1)120         {121             return -1;122         }123     }124     125     //返回指定数据的后继126     function NextElem($cur)127     {128         if($this->LocateElem($cur)==($this->length-1))129         {130             return false;131         }132         else if($this->LocateElem($cur)>0)133         {134             $location=$this->LocateElem($cur);135             return $this->arr[$location+1];136         }137         else if($this->LocateElem($cur)==-1)138         {139             return -1;140         }141     }142     143     function ListDelete($poi)144     {145         if($poi<1||$poi>$this->length)146         {147             return false;148         }149         else{150             $res=$this->arr[$poi-1];151             unset($this->arr[$poi-1]);152             return $res;153         }154     }155 }156 157 ?>

相关文章列表: