php陣列實現佇列 棧等資料結構

2021-09-01 16:45:17 字數 1164 閱讀 7294

資料結構從巨集觀的概念層次講呢,就是一組資料元素及之間的關係。程式設計的世界裡,最簡單也最經典的資料結構就是棧和佇列。

棧,體現的是後進先出,即lifo。

佇列,體現的是先進先出,即fifo。

php為陣列定義了太多的操作函式,可能phper們常用的也就那麼幾個,list、each、count、next、prev、reset、end、sort、rsort、in_array、array_shift、array_unshift、array_pop、array_push等等。

現在,咱就用幾個常用函式來實現棧、佇列。

array_pop() //尾出

array_push() //尾進

或array_shift()//頭進

array_unshift()//頭出

以上兩組操作都能實現fifo的演算法,拿乙個經典的例子測試下。

用例:驗證乙個數學算式是否正確,比如。

分析:對於乙個算式的正確與否,就是體現在,各種括號的匹配上,括號完全匹配,算式就沒問題,那怎麼來檢驗乙個算式裡的括號匹配呢,碰到過很多人想著用正則。我是想不通這正則怎麼寫,怎麼實現巢狀關係。這個時候棧就派上用場了。看下邊**。

<?php

function check($arg)

',']',')');//右括號

$stack = array();

reset($arr);

while (list($key,$value)=each($arr))

elseif (in_array($value, $rightbracket))

else

}else

}} if(!empty($stack))

else }

$test = '';

print check($test);

?>

上述**中的棧,是由array_pop和array_push實現的;同理,也可以用array_shift和array_unshift實現。

佇列

array_shift() //頭出

array_push() //尾進

或array_unshift //頭進

array_pop //尾出

未完待續……

資料結構 線性結構 棧 佇列 陣列

棧和佇列是插入 刪除受限制 只能在表的一端插入 刪除,不能從中間插入 刪除 的線性表。它們的儲存結構,以及儲存結構下不同操作的屬性和普通線性表是一樣的。因為受限制,理解起來反而更簡單。棧 lifo last in first out 是後進先出的線性表,採用順序儲存時,稱順序棧 採用鏈式儲存時,稱鏈...

資料結構 佇列 (十二) 佇列實現棧

使用兩個佇列實現棧,要滿足 先出,比如輸入 1 2 3 4 5,那麼輸出就應該是 5 4 3 2 1 使用兩個佇列,分別是資料佇列和輔助隊裡,1 資料新增到資料佇列中 2 元素出棧時,將有資料的佇列元素 保留最後乙個元素 移動到無資料的佇列 3 將最後乙個元素出隊,正式所需要的出棧資料 system...

資料結構學習之棧 佇列等

gdb除錯段錯誤 1.ulimit c unlimited 2.ulimit c 1000 3.gcc 檔案 g 4.執行程式 a.out 生成core檔案 5.gdb a.out core 順序棧1.出棧 datatype popseqstack seqstack stack 功能 從順序棧中出棧...