棧和佇列是兩種應用非常廣泛的資料結構,它們都來自線性表資料結構,都是「操作受限」的線性表。
棧棧在計算機的實現有多種方式:
硬堆疊:利用cpu中的某些暫存器組或類似的硬體或使用記憶體的特殊區域來實現。這類堆疊容量有限,但速度很快;
軟堆疊:這類堆疊主要在記憶體中實現。堆疊容量可以達到很大。在實現方式上,又有動態方式和靜態方式兩種
1.定義:
棧(stack):是限制在表的一端進行插入和刪除操作的線性表。又稱為後進先出lifo (last in first out)或先進後出filo (first in last out)線性表。
棧頂(top):允許進行插入、刪除操作的一端,又稱為表尾。用棧頂指標(top)來指示棧頂元素。
棧底(bottom):是固定端,又稱為表頭。
空棧:當表中沒有元素時稱為空棧。
2.棧的順序儲存表示
3.棧的鏈式儲存表示
棧的鏈式儲存結構稱為鏈棧,是運算受限的單鏈表。其插入和刪除操作只能在表頭位置上進行。因此,鏈棧沒有必要像單鏈表那樣附加頭結點,棧頂指標top就是鍊錶的頭指標。
下面是php實現的棧的基本操作,僅為本人個人創作,僅供參考!
<?php/**";*棧的鏈式儲存表示和棧的基本操作
**1.初始化棧 __construct()
*2.判斷棧是否空棧 getisempty()
*3.將所有元素出棧 getallpopstack()
*4.返回棧內元素個數 getlength()
*5.元素進棧 getpushstack()
*6.元素出棧 getpopstack()
*7.僅返回棧內所有元素 getallelem()
*8.返回棧內某個元素的個數 getcountforelem()
*/header("content-type:text/html;charset=gb2312");
class
lnode
}class
stacklinked/**
*判斷棧是否空棧
**@return boolean 如果為空棧返回true,否則返回false
*/public
function
getisempty()
else
}/***將所有元素出棧
**@return array 返回所有棧內元素
*/public
function
getallpopstack()
else
} self::$mlength=0;
return$e;
}/***返回棧內元素個數
**@return int
*/public
static
function
getlength()/**
*元素進棧
**@param mixed $e 進棧元素值
*@return void **/
public
function getpushstack($e)/*
**元素出棧
**@param lnode $e 儲存出棧的元素的變數
*@return boolean 出棧成功返回true,否則返回false **/
public
function getpopstack(&$e)
$p=$this->mnext;
$e=$p->melem;
$this->mnext=$p->mnext;
self::$mlength--;
}/***僅返回棧內所有元素
**@return array 棧內所有元素組成的乙個陣列
*/public
function
getallelem()
else
return
$sldata; }
/*** 返回棧內某個元素的個數
* * @param mixed $e 待查詢的元素的值
* @return int
* */
public
function getcountforelem($e
) }
return
$count
; }
}echo "";
$sl=new
stacklinked();
var_dump($sl->getisempty());
$sl->getpushstack(12);
$sl->getpushstack(255);
var_dump($sl->getisempty());
var_dump($sl->getallelem());
echo
$sl->getlength();
$e=0;
echo "\r\n";
var_dump($sl->getisempty());
echo "\r\n";
$sl->getpopstack($e
);echo$e;
echo "\r\n";
echo
$sl->getlength();
echo "\r\n";
var_dump($sl->getallelem());
var_dump($sl->getallpopstack());
var_dump($sl->getisempty());
var_dump($sl->getlength());
echo "
?>
PHP資料結構之五 棧的PHP的實現和棧的基本操作
from 棧和佇列是兩種應用非常廣泛的資料結構,它們都來自線性表資料結構,都是 操作受限 的線性表。棧棧在計算機的實現有多種方式 硬堆疊 利用cpu中的某些暫存器組或類似的硬體或使用記憶體的特殊區域來實現。這類堆疊容量有限,但速度很快 軟堆疊 這類堆疊主要在記憶體中實現。堆疊容量可以達到很大。在實現...
php的資料結構 PHP 資料結構演算法
基本資料結構演算法 二分查詢 陣列裡查詢某個元素 function bin sch array,low,high,k elseif k array mid elseelseelseelse return false return 0 查詢字串 function strstr str,substr m...
php資料結構
1 資料結構的基本概念 資料元素 組成資料的,有一定意義的基本單位 資料項 乙個資料元素可以由若干個資料項組成 資料物件 性質相同的資料元素的集合 資料結構 資料結構是計算機用來組織和儲存資料的方式!具體意義 資料結構是指相互之間存在著一種或者多種關係的資料元素的集合和該集合中資料元素之間的關係組成...