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 ?>
原文地址:https://www.cnblogs.com/phpfreshman/p/3350614.html