php用陣列實現堆疊與佇列操作
阿新 • • 發佈:2018-12-02
/**
* 陣列與資料結構
* 一、堆疊操作
* 棧:僅允許在一端進行插入和刪除的線性表結構,即先入後出,如同彈夾
* 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>';