資料結構線性表程式碼

2020-07-16 10:06:43

資料結構線性表程式碼

線性表是n個資料特性相同的元素的組成有限序列,是最基本且常用的一種線性結構(線性表,棧,佇列,串和陣列都是線性結構),同時也是其他資料結構的基礎。

對於非空的線性表或者線性結構的特點:

(1)存在唯一的一個被稱作「第一個」的資料元素;

(2)存在唯一的一個被稱作「最後一個」的資料元素;

(3)除第一個外,結構中的每個資料元素均只有一個前驅;

(4)除最後一個外,結構中的每個資料元素均只有一個後繼;

線性表結構順序表示(順序表)

概念:用一組地址連續的儲存單元依次儲存線性表的資料元素,這種儲存結構的線性表稱為順序表。

特點:邏輯上相鄰的資料元素,物理次序也是相鄰的。

只要確定好了儲存線性表的起始位置,線性表中任一資料元素都可以隨機存取,所以線性表的順序儲存結構是一種隨機存取的儲存結構,因為高階語言中的陣列型別也是有隨機存取的特性,所以通常我們都使用陣列來描述資料結構中的順序儲存結構,用動態分配的一維陣列表示線性表。

下面是用php來實現資料結構線性表(順序表)的程式碼:

<?php
class ArrayList{
    private $list;
    private $size;
    public function __construct()
    {
        $this->list=array();
        $this->size=0;
    }
    //初始化連結串列
    public function InitList(){
        $this->list=array();
        $this->size=0;
    }
    //刪除連結串列
    public function destoryList(){
        if (isset($this->list)){
            unset($this->list);
            $this->size=0;
        }
    }
    //清空連結串列
    public function clearList(){
        if (isset($this->list)){
            unset($this->list);
        }
        $this->list=array();
        $this->size=0;
    }
    //判斷連結串列是否為空
    public function emptyList(){
        if (isset($this->list)){
            if ($this->size==0){
                return true;
            }else{
                return false;
            }
        }
    }
    //連結串列長度
    public function lengthList(){
        if (isset($this->list)){
            return $this->size;
        }else{
            return false;
        }
    }
    //取元素
    public function getElem($i){
        if ($i<1||$i>$this->size){
            die('failed');
        }
        if (isset($this->list)&&is_array($this->list)){
            return $this->list[$i-1];
        }
    }
    //是否在連結串列中
    public function locateElem($e){
        if (isset($this->list)&&is_array($this->list)){
            for ($i=0;$i<$this->size;$i++){
                if ($this->list[$i]==$e){
                    return $i+1;
                }
                return 0;
            }
        }
    }
    //前驅
    public function priorElem($i){
        if ($i<1||$i>$this->size){
            die('failed');
        }
        if ($i==1){
            die('no prior');
        }
        if (isset($this->list)&&is_array($this->list)){
            return $this->list[$i-2];
        }
    }
    //後繼
    public function nextElem($i){
        if ($i<1||$i>$this->size){
            die('failed');
        }
        if ($i==$this->size){
            die('no next');
        }
        if (isset($this->list)&&is_array($this->list)){
            return $this->list[$i];
        }
    }
    //插入元素
    public function insertList($i,$e){
        if ($i<1||$i>$this->size){
            die('failed');
        }
        if (isset($this->list)&&is_array($this->list)){
            if ($this->size==0){
                $this->list[0]=$e;
                $this->size++;
            }else{
                for($j=$this->size-1;$j>=$i;$j--){
                    $this->list[$j]=$this->list[$j-1];
                }
                $this->list[$i-1]=$e;
                $this->size++;
            }
        }
    }
    //刪除元素
    public function deleteList($i){
        if ($i<1||$i>$this->size){
            die('failed');
        }
        if (isset($this->list)&&is_array($this->list)){
            if ($i==$this->size){
                unset($this->list[$i-1]);
            }else{
                unset($this->list[$i-1]);
                for ($j=$i;$j<$this->size;$j++){
                    $this->list[$j-1]=$this->list[$j];
                }
            }
            $this->size--;
        }
    }
    //遍歷
    public function printList(){
        if (isset($this->list)&&is_array($this->list)){
            foreach ($this->list as $value) {
                echo $value.' ';
            }
        }
    }
}

以上就是資料結構線性表程式碼的詳細內容,更多請關注TW511.COM其它相關文章!