1. 程式人生 > >php用陣列實現堆疊與佇列操作

php用陣列實現堆疊與佇列操作

/**
* 陣列與資料結構
* 一、堆疊操作
* 棧:僅允許在一端進行插入和刪除的線性表結構,即先入後出,如同彈夾
* 1.array_push()在尾部插入
* 2.array_pop()在底部刪除
*
* 二、佇列操作
* 佇列:僅允許在頭部刪除,尾部插入的線性表結構,即先入先出,如同排隊
* 1.array_unshift()在頭部插入
* 2.array_shift()在頭部刪除
*/

 

/**
* 一、堆疊操作(尾部增刪除元素)
* 1.array_push($arr,$val...) 入棧   (然後返回新陣列的長度)
* 2.array_pop($arr)出棧,返回棧頂元素,僅一個(返回陣列的最後一個值。如果陣列是空的,或者非陣列,將返回 NULL。)
*/

//必須先定義一個空陣列
$arr = [];

echo '<pre>'. '入棧'.array_push($arr,'趙麗穎') .'個元素'.'<br>';
echo '<pre>'.var_export($arr,true).'<br>';
echo '<pre>'. '入棧'.array_push($arr,'劉亦菲','小龍女') .'個元素'.'<br>';
echo '<pre>'.var_export($arr,true).'<br>';
echo '<pre>'. '入棧'.array_push($arr,['楊冪','唐嫣']) .'個元素'.'<br>';
echo '<pre>'.var_export($arr,true).'<br>';
echo '<hr>';

echo '<pre>'. '出棧元素是'.var_export(array_pop($arr),true) .'<br>';
echo '<pre>'.var_export($arr,true).'<br>';
echo '<pre>'. '出棧元素是'.var_export(array_pop($arr),true) .'<br>';
echo '<pre>'.var_export($arr,true).'<br>';
echo '<pre>'.'出棧元素是'.var_export(array_pop($arr),true).'<br>';
echo '<pre>'.var_export($arr,true);

 

/**
* 二、頭部增刪除操作
* 1. array_unshift($arr,$var....):頭部插入 (該函式會返回陣列中元素的個數。)
* 2. array_shift($arr): 頭部刪除   (返回從陣列中刪除元素的值,如果陣列為空則返回 NULL。)
*/

$arr = [];
//入隊
echo '入隊'.array_unshift($arr,'郭德綱').'個元素<br>';
echo '入隊'.array_unshift($arr,'小崔').'個元素<br>';
echo '入隊'.array_unshift($arr,'小剛').'個元素<br>';
echo var_export($arr,true).'<br>';

//頭部刪除元素
echo '刪除了'.array_shift($arr).'<br>';
echo var_export($arr,true).'<br>';
echo '<hr>';

//其實佇列應該是插入與刪除在陣列的兩端進行,而不是像堆疊那樣在陣列的一端進行
//所以實現佇列操作,應該是array_push()和array_shift()配合完成
//入隊 array_push()
array_push($arr,'冰冰');
echo var_export($arr,true).'<br>';
//出隊: array_shift()
array_shift($arr);
echo var_export($arr,true).'<br>';