首页 > 其他分享 >数据结构之线性表(顺序存储表)

数据结构之线性表(顺序存储表)

时间:2024-03-02 19:11:50浏览次数:20  
标签:function index return 线性表 get item length 数据结构 顺序存储

php

<?php

/**
 * Created by PhpStorm.
 * User: SillyCat
 * Date: 2024/3/2
 * Time: 18:47
 */
class SequenceList
{
    private $item = array();
    private $length = 0;

    public function __construct()
    {
//        $this->item = $item;
        $this->length = 0;
    }

    /**
     * @function: get_length
     * @Desc:获取表的长度
     * @return int
     */
    public function get_length()
    {
        return $this->length;
    }

    /**
     * @function: insert
     * @Desc:在指定位置插入元素
     * @param $index  /要插入的位置
     * @param $item /要插入的元素
     * @return bool 插入成功返回true,否则返回false
     */
    public function insert($index,$item)
    {
        if($index<0||$index>$this->length)
        {
            return false;
        }
        // 元素后移:将数字统统往后移动一个位置
        //方法一
//        for ($i = $this->length - 1; $i >= $index; $i--) {
//            $this->item[$i + 1] = $this->item[$i]; //
//        }
        //array_splice 函数 用于插入元素
        array_splice($this->item,$index,0,$item);
        $this->length++;
        return true;
    }

    /**
     * @function: delete
     * @Desc:删除指定位置的元素
     * @param $index
     * @return mixed|null 删除成功返回删除的元素,否则返回null
     */
    public function delete($index)
    {
        if($index<0||$index>$this->length-1)
        {
            return null;//删除失败
        }
        $item = $this->item[$index];
//元素前移
//        for ($i = $index; $i < $this->length - 1; $i++) {
//            $this->item[$i] = $this->item[$i + 1];
//        }
        array_splice($this->item,$index,1);
        $this->length--;
        return $item;

    }
    /**
     * @function: get_item_by_index
     * @Desc:根据位置获取元素
     * @param $index
     * @return mixed 不存在返回null
     */
    public function get_item_by_index($index)
    {
        $length= $this->get_length();
        if($index<0||$index>$length-1)
        {
            return null;
        }
        return $this->item[$index];
    }
    /**
     * @function: get_index_by_item
     * @Desc:根据元素获取位置
     * @param $item
     * @return int 位置 -1 不存在 否则返回位置
     */
    public function get_index_by_item($item)
    {
        $length= $this->get_length();
        for($i=0;$i<$length;$i++)
        {
            if($this->item[$i]==$item)
            {
                return $i;
            }
        }
        return -1;
    }
       /**
        * @function: display
        * @Desc:显示线性表
        */
    public function display()
    {
        $length= $this->get_length();
        for($i=0;$i<$length;$i++)
        {
            echo $this->item[$i]." ";
        }
        echo PHP_EOL;
    }

}

/**
 * 测试
 */
$line=new SequenceList();
// 插入元素
$line->insert(0,1);
$line->insert(1,2);
$line->insert(2,3);
$line->insert(3,4);
$line->insert(4,5);
//显示
$line->display();//1 2 3 4 5
//指定位置的元素
echo $line->get_item_by_index(2).PHP_EOL;//3
//指定元素的位置
echo $line->get_index_by_item(3).PHP_EOL;//2
//删除指定位置的元素
echo $line->delete(2).PHP_EOL;//3

标签:function,index,return,线性表,get,item,length,数据结构,顺序存储
From: https://www.cnblogs.com/SillyCats/p/18049097

相关文章

  • 基础数据结构->set&&map
    set&&mapBEGIN:惜墨如金set用法#include<bits/stdc++.h>usingnamespacestd;voidthe_map(){map<string,int>ds;stringkis="kis";ds[kis]=2;ds["a+a"]=3;ds["b+"]=4;ds["c-"]=5;//这样就可将这个“数......
  • Redis基础数据结构
    简单动态字符串SDS在Redis里面字符串随处可见比如//设置一个(key,value)为msg和helloworld的键值对setmsg"helloworld"在这里,msg和helloworld都是一个字符串.Redis自己构建了一个名为SDS(SimpleDynamicString简单动态字符串)的类,用于作为Redis底层字符串的默认实......
  • [思维] [树形数据结构] CF1379F1 Chess Strikes Back (easy version)
    注意到棋盘大小为$2n,2m$,共$2nm$个白格,同时国王数量为$nm$,尝试将$2$个国王捆绑在一块,即将棋盘均匀划分为若干个$2*2$大小的大格子。在此基础上观察,显然同一个大格子内的两个白格不能同时放置国王,同时大格子数量为$nm$,因此问题转化为判定能否使得所有大格子都有一个国王,......
  • 8-2. 数据结构及坐标保存加载
    使用ISaveable标识可保存的数据现在C#也像Java一样,接口可以写默认实现。大括号的写法和=>的写法是完全一致的使用DataManager来统一管理所有数据usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.InputSystem;pu......
  • 数据结构与算法
    绪论数据结构的基本概念数据:是信息的载体,分整数型与非整数型数据数据项:构成数据元素的最小不可分割单位,如学生的成绩数据元素:数据的基本单位,作为一个整体存储,如每个学生的信息数据类型:具有相同性质的计算机数据的集合,以及在这个集合上的一系列操作,比如in......
  • 数据结构【线段树】
    对于一个数据结构而言,我们总要能对其进行两件事:修改和操作。操作在这里是一个专有名词,专门指代求最值、求和等操作,具体能指代什么操作之后再聊。 如果朴素的用数组进行存储,那么修改是O(1)的,而操作往往是O(n)的。当操作指的是求和的时候,我们可以使用前缀和算法,前缀和使得操作是O(......
  • Qt 常见数据结构详解:从基本框架到实际应用
    在Qt框架中,数据结构的选择对于提高代码效率和性能至关重要。正确地使用数据结构可以显著提高应用程序的效率和响应速度。下面我们将详细介绍Qt中常见的几种数据结构,包括QString、QList、QVector、QMap、QHash、QSet和QPair。1.QStringQString是Qt中用于处理字符串的类。......
  • 算法入门:数据结构
    文章目录1.什么是算法和数据结构2.算法2.1.算法的特性2.2.算法设计的要求3.数据结构3.1.数组3.1.1.数组的定义3.1.2.数组的基本特性3.1.3.多维数组3.1.4.数组的同质性3.1.5.动态数组3.1.6.数组的优缺点3.1.7.数组的应用场景3.1.8.结论3.2.链表3.2.1.链表的定义......
  • 类:数据结构(模板)、数据类型(反射)、种类(amount)
    1.析构函数:在GC回收资源时,我们可以在析构函数中做事情; 2.也可以不用new关键字进行创建对象: 使用dynamic,可以直接调用name 3.静态构造器只能初始化静态成员 ......
  • 线性数据结构:数组、受限数组(栈、队列)、线性表
    1.数组数组定义  数组(Array)是有序的元素序列。属于线性结构(有且仅有一个前驱、有且仅有一个后继)。数组特点  数组的关键在于在内存中的物理地址对应的是一段连续的内存。这意味着如果想要在任意位置删除/新增一个元素,那么该位置往后的所有元素,都需要往前挪/往后挪一个位......