php实现线性表顺序存储(增删查改)

本文介绍了一种基于PHP实现的线性表顺序存储方法,包括构造函数、按位及按值查找、插入与删除操作等核心功能。通过具体代码示例展示了如何使用该线性表实现基本的数据结构操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
/*
 *文件名:linearList.php
 * 功能:数据结构线性表的顺序存储实现
 * author:黎锦焕
 * @copyright:www.drw1314.com
 */

class linearList {
        private $arr;
        private $length;
        const   MAXSIZE=100;
 
        /*
         *构造函数,判断空表还是飞空表,并且进行实例化
         * @param array $arr 输入的数组
         * @param int $n 输入数组的长度
         * @ruturn void;
        */
          function __construct($arr,$n) {
              if($n>self::MAXSIZE) {
                   echo '对不起,数组的长度'.$n.'超出了内存空间!'.self::MAXSIZE;
              } else if($n<0) {
                   echo '异常,长度不能为负数。';
              } else if($n==0) {
                   echo '<br/>....你创建了一张空表,数组长度为0....<br/><br/>';
               $this->arr=$arr;
               $this->length=$n;
              }else{
                   echo '<br/>....成功创建一张表....<br/><br/>';
                   $this->arr=$arr;
                   $this->length=$n;
              }
           }
 


          /*
           *按位查找,返回查找到的值
           * @ruturn string; 
           * @param int $n 查找的位置
           */
           function findValue($n) {
               if($n>$this->length||$n<1){
                    return '输入的位置'.$n.'不正确,请在1到'.$this->length.'的范围内';
               }
                   return '你要找的第'.$n.'位的值为'.$this->arr[$n-1];
            }
  
          /*
           *按值查找,返回查找到的位置
          * @ruturn string;
          * @param int $n 查找的值
          */
          function findSite($n) {
               for($i=0;$i<$this->length;$i++){
                    if($this->arr[$i]==$n){
                         $b=$i+1;
                         return '你要找的值'.$n.'对应的位置为'.$b;
                    }else{
                         $v=false;
                    }
               }
               if(!$v){
                        return '你所找的值'.$n.'不存在';
               }   
           }
 
           /*
            *在选定的位置处插入某个值
            * @ruturn array;
            * @param int $i 插入位置
            * @param int $v 插入的值
            */
          function insertValue($i,$v) {
               if($i<1||$i>self::MAXSIZE){
                    echo '插入的位置'.$i.'不正确,请在1到'.self::MAXSIZE.'的范围内';
                    return ;
               }
               for($h=$this->length;$h>=$i;$h--){
                    $this->arr[$h]=$this->arr[$h-1];
               }
               if($i>$this->length){
                    $this->arr[$this->length]=$v;
               }else{
                    $this->arr[$i-1]=$v;
               }
                  $this->length++;
                  return $this->arr;
          }
 
              /*
               *在选定的位置删除某个值
              * @ruturn array;
              * @param int $i 位置
              */
              function deleteValue($i) {
                   if($i<1||$i>$this->length){
                        echo '选定的位置'.$i.'不正确,请在1到'.$this->length.'的范围内';
                        return ;
                   }
                   for($j=$i;$j<$this->length;$j++){
                        $this->arr[$j-1]=$this->arr[$j];
                   }
                   unset($this->arr[$this->length-1]);
                   $this->length--;
                   return $this->arr;
              }
  
              function __destruct(){
                   if($this->length==0){
                        echo '<br/>...销毁一张空表...<br/>';
                   }else{
                        echo '<br/>...成功销毁一张表..<br/>';
                   }
              }

 
}

 

 

//下面是使用案例

$arr=array(10,125,123,1,4);
$n=5;

$linearList=new linearList($arr, $n);

echo $linearList->findValue(5).'<br/>';

echo $linearList->findSite(4).'<br/>';

echo '<pre>';
print_r($linearList->insertValue(20,300));
echo '</pre>';
echo '<pre>';
print_r($linearList->deleteValue(1));
echo '</pre>';

转载于:https://www.cnblogs.com/huaxiamingwang/archive/2012/02/16/2354683.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值