PHP資料結構之三 線性表中的單鏈表的PHP實現

2021-07-16 07:53:08 字數 3328 閱讀 4367

線性表的鏈式儲存:用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。

鏈式儲存線性表的特點:儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。

php實現單鏈表

<?php

/***單鏈表的基本操作

*1.初始化單鏈表 __construct()

*2.清空單鏈表 clearsll()

*3.返回單鏈表長度 getlength()

*4. 判斷單鏈表是否為空 getisempty()

*5.頭插入法建表 getheadcreatesll()

*6.尾插入法建表 gettailcreatesll()

*7.返回第$i個元素 getelemforpos()

*8.查詢單鏈表中是否存在某個值的元素 getelemi***ist()

*9.單鏈表的插入操作 getinsertelem()

*10.遍歷單鏈表中的所有元素 getallelem()

*11.刪除單鏈中第$i個元素 getdeleteelem()

*12.刪除單鏈表中值為$value的前$i($i>=1)個結 點 getdeleteelemforvalue()

*13.刪除單鏈表所有重複的值 getelemunique()

**/header("content-type:text/html;charset=gb2312");

class lnode

}class singlelinkedlist

/***清空單鏈表

**@return void

*/public function clearsll()

self::$mlength=0;}}

/***返回單鏈表長度

**@return int

*/public static function getlength()

/***判斷單鏈表是否為空

**@return bool 為空返回true,不為空返回false

*/public function getisempty()else

}/**

*頭插入法建表

**@param array $sarr 建立單鏈表的資料

*@return void

*/public function getheadcreatesll($sarr)

}else

}/**

*尾插入法建表

**@param array $sarr 建立單鏈表的資料

*@return void

*/public function gettailcreatesll($sarr)

}else

}/**

*返回第$i個元素

**@param int $i 元素位序,從1開始

*@return mixed

*/public function getelemforpos($i)

$j=1;

$p=$this->mnext;

while($j<$i)

return $p;

}/**

*查詢單鏈表中是否存在某個值的元素

*如果有返回該元素結點,否則返回null

**@param mixed $value 查詢的值

*@return mixed

*/public function getelemi***ist($value)

if(strcmp($p->melem,$value)===0)else

}/**

*查詢單鏈表中是否存在某個值的元素

*如果有返回該元素位序,否則返回-1

**@param mixed $value 查詢的值

*@return mixed

*/public function getelemposition($value)

if(strcmp($p->melem,$value)===0)else

}/**

*單鏈表的插入操作

**@param int $i 插入元素的位序,即在什麼位置插入新的元素,從1開始

*@param mixed $e 插入的新的元素值

*@return boolean 插入成功返回true,失敗返回false

*/public function getinsertelem($i,$e)

$j=1;

$p=$this;

while($p->mnext!=null && $j<$i)

$q=new lnode();

$q->melem=$e;

$q->mnext=$p->mnext;

$p->mnext=$q;

self::$mlength++;

return true;

}/**

*遍歷單鏈表中的所有元素

**@return array 包括單鏈中的所有元素

*/public function getallelem()else

$slldata=$p->melem;

}return $slldata;

}/**

*刪除單鏈中第$i個元素

*@param int $i 元素位序

*@return boolean 刪除成功返回true,失敗返回false

*/public function getdeleteelem($i)

$p=$this;

$j=1;

while($j<$i)

$q=$p->mnext;

$p->mnext=$q->mnext;

$q=null;

unset($q);

self::$mlength--;

}/**

*刪除單鏈表中值為$value的前$i($i>=1)個結 點

**@param mixed 待查詢的值

*@param $i 刪除的次數,即刪除查詢到的前$i個

@return void

*/public function getdeleteelemforvalue($value,$i=1)

$vp=$this->getelemposition($value);

$this->getdeleteelem($vp);

}/**

*刪除單鏈表所有重複的值

**@return void

*/public function getelemunique()else

}if(strcmp($p->melem,$q->melem)===0)

$p=$p->mnext;}}

}}?>

資料結構 三 線性表

零個或多個資料元素的有限序列 在較複雜的線性表中,乙個資料元素可以由諾幹個資料項組成 結構 define listsize 100 線性表的最大長度 typedef int datatype typedef struct seqlist datatype是資料元素型別,可以根據需要定義,可以使用se...

資料結構(三)線性表 順序儲存結構

線性表 1 不同應用,操作不同。2 對於複雜的操作,可以用這些資料的組合來操作。3 介面不同。順序儲存結構及實現 連續儲存單元依次儲存 可通過位置儲存元素 可以隨機訪問 無需額外空間 必須預留空間 各函式只是引數型別不一樣,其功能在本質上完全相同。若能寫一段通用 適用於各種資料型別,則 的可重用性大...

資料結構(三) 線性表 順序表,鍊錶

一 線性表概述 線性表是最簡單的一種的資料結構,由若干相同特徵的資料元素組成的有限序列 沒有前驅元素的的結點稱為線性表的頭結點,沒有後繼元素的結點稱為線性表的尾結點 線性表按照儲存元素的結構,可以分為順序表和煉表 二 順序表 2.1基本實現 順序表是在計算機記憶體中以陣列形式存在的線性表結構,即記憶...