1. 程式人生 > >演算法學習2

演算法學習2

後進者先出,先進者後出,這就是典型的“棧”結構。
從棧的操作特性上來看,棧是一種“操作受限”的線性表,只允許在一端插入和刪除資料。
事實上,從功能上來說,陣列或連結串列確實可以替代棧,但你要知道,特定的資料結構是對特定場景的抽象,而且,陣列或連結串列暴露了太多的操作介面,操作上的確靈活自由,但使用時就比較不可控,自然也就更容易出錯。

當某個資料集合只涉及在一端插入和刪除資料,並且滿足後進先出、先進後出的特性,我們就應該首選“棧”這種資料結構。
如何實現一個“棧”?
從剛才棧的定義裡,我們可以看出,棧主要包含兩個操作,入棧和出棧,也就是在棧頂插入一個數據和從棧頂刪除一個數據。
理解了棧的定義之後,我們來看一看如何用程式碼實現一個棧。
實際上,棧既可以用陣列來實現,也可以用連結串列來實現。
用陣列實現的棧,我們叫作順序棧,用連結串列實現的棧,我們叫作鏈式棧。
佇列、棧是線性資料結構的典型代表,而陣列、連結串列是常用的兩種資料儲存結構;佇列和棧均可以用陣列或連結串列的儲存方式實現它的功能!