数组是一个顺序结构的线性表,所有元素的内存地址都是连续的动态数组(DynamicArray)接口设计size();//元素个数isEmpty();//是否为空contains(item);//是否包含元素add(Eelement);//将元素添加到末尾get(intindex);//返回索引位置对应的元素set(intindex,item);//设置索引位置的元素add(intindex,item);//添加元素到索引位置remove(intindex);//删除索引位置对应的元素indexOf(item);//查看元素的位置clear();//清除所有元素capacity=max(self::DEFAULT_CAPACITY,$capacity);}/***@returnint*获取当前数组的元素个数*/publicfunctionsize():int{return$this->size;}/***@returnbool*是否为空*/publicfunctionisEmpty():bool{return0===$this->size;}/***是否包含一个元素*@param$item*@returnbool*/publicfunctioncontains($item):bool{return$this->indexOf($item)!=self::ITEM_NOT_FOUND;}/***@param$item*在末尾添加一个元素*/publicfunctionadd($item){return$this->insert($this->size,$item);}/***@paramint$index*@returnmixed*1,2,3,4移除索引为1的元素,1,3,4循环两次。来自*/publicfunctionremove(int$index){$this->rangeCheck($index);$old=$this->元素[$index];for($i=$index+1;$i<$this->size;$i++){$this->元素[$i-1]=$this->元素[$i];}$this->elements[--$this->size]=null;返回$旧;}/***清除所有元素*/publicfunctionclear(){for($i=0;$i<$this->size;$i++){$this->elements[$i]=null;}$this->size=0;}/***@paramint$index*@param$item*设置索引位置的元素*@returnmixed*/publicfunctionset(int$index,$item){$this->rangeCheck($index);$old=$this->元素[$index];$this->元素[$index]=$item;返回$旧;}/***@paramint$index*@param$item*插入一个元素*1,3,4,5在索引0处插入2得到2,1,3,4,5*插入索引后的元素先向后移动,然后插入一个新元素*@returnmixed*/publicfunctioninsert(int$index,$item){$this->rangeCheckForInsert($index);//扩展数组长度for($i=$this->size;$i>$index;$i--){$this->elements[$i]=$this->elements[$i-1];}$this->elements[$index]=$item;$这个->尺寸++;返回$项目;}/***@paramint$index*获取索引位置的元素*@returnmixed*/publicfunctionget(int$index){$this->rangeCheck($index);返回$this->elements[$index];}/***@param$item*检查元素的索引*@returnint*/publicfunctionindexOf($item):int{for($i=0;$i<$this->size;$i++)if($this->elements[$i]===$item)返回$i;返回自我::ITEM_NOT_FOUND;}/***确保足够的容量*@paramint$capacity当前元素的容量*/privatefunctionensureCapacity(int$capacity){$oldCapacity=count($this->elements);如果($这个->容量>=$容量)返回;//设置新容量$this->capacity=$this->capacity+($this->capacity>>1);}/***异常抛出*@paramint$index*@throwsException*/privatefunctionoutOfBoundsException(int$index){thrownewException("Index:{$index},Size:{$this->size}");}privatefunctionrangeCheck(int$index){if($index<0||$index>=$this->size){$this->outOfBoundsException($index);}}私有函数rangeCheckForInsert(int$index){if($index<0||$index>$this->size){$this->outOfBoundsException($index);}}publicfunction__toString(){$string="size={$this->size},[";for($i=0;$i<$this->size;$i++){如果(0!=$i)$string.=",";$string.=$this->元素[$i];}$string.=']';返回$字符串;}}$list=newArrayList();$list->add(1);$list->add(2);$list->add(3);$list->insert(1,4);$list->clear();//var_dump((string)$列表);使用:$list=newArrayList();$列表->添加(1);$列表->添加(2);$列表->添加(3);$list->insert(1,4);$list->clear();使用php实现数组的数据结构,记录第一天学习,感受数据结构之美。
