PHP數據結構練習筆記--線性表

1.類中變量直接調用和$this->調用不一樣php

2.清空數組array方法:數組

  A unset() 釋放資源,這個array變量就沒有了函數

  B $arr=array() 從新賦值,將原有的變量賦值給一個新的空數組this

 

線性表類--最終代碼spa

  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 ?>
相關文章
相關標籤/搜索