介紹
「要成高手,必練此功」。
要成為優秀的程式設計師,資料結構和演算法是必修的內容。而現在的Web程式設計師使用傳統演算法和資料結構都比較少,因為很多演算法都是包裝好的,不用我們去操心具體的實作細節,如PHP的取棧操作array_pop,進棧操作array_push,都有指定的函式庫函數,導致我們對基礎演算法的研究越來越少,最後成為一個工具的傀儡而已。
所以我還是建議更多的coder從基礎開始學習。這篇就先講我們最熟悉的堆疊操作開始入手,讓我們熟悉堆疊。
棧為何?
口訣“後進先出”,這是我印象最深的一句話,也是老師一坨講解中,印象最深刻的。
定義:棧是限制插入和刪除都只能發生在一個位置上進行的線性表,該位置是線性表的末端,稱為棧的頂。
過程:先進入的資料被壓入棧底,最後的資料在棧頂,需要讀取資料的時候從棧頂開始彈出資料(最後一個資料被第一個讀出來)。
分析
大字節透過定義和動作的結構,透過定義資料和動作部分,將資料定義為紅色結構(紅色識別)。
請閱讀
組成成分
資料:線性表(以array結構將其命名為data),末端索引(以int結構儲存命名為end,初始值為null—因為開始線性表是沒有元素的,所以就沒有末端索引
這麼一說,而且由於不斷取數據,添加數據,這個末端是變化的元素。動作(方法):壓入(push:規則,放在線性表最後面),彈出(pop:規則,從最後取出,並且末端位置向前移動)。
編碼
總結
以上是自己對堆疊的分析理解過程,由於我是一名php coder ,所以我用php的角度去分析、編碼。如果是C語言去編碼,數組應該指定最大寬度,因為C語言數組不像php數組能自行增長,必須要有一個初始寬度。
感謝川山甲投稿.
以上就介紹了PHP 程式設計師學資料結構與演算法之《棧》,包括了開始入手,索引方面的內容,希望對PHP教程有興趣的朋友有所幫助。