線性表的鏈式儲存:用一組任意的儲存單元儲存線性表中的資料元素。用這種方法儲存的線性表簡稱線性鍊錶。
鏈式儲存線性表的特點:儲存鍊錶中結點的一組任意的儲存單元可以是連續的,也可以是不連續的,甚至是零散分布在記憶體中的任意位置上的。鍊錶中結點的邏輯順序和物理順序不一定相同。
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基本實現 順序表是在計算機記憶體中以陣列形式存在的線性表結構,即記憶...