堆棧(Stack)最明顯的特征就是“先進後出”,本質上講堆棧也是一種線性結構,符合線性結構的基本特點:即每個節點有且隻有一個前驅節點和一個後續節點。
從示意圖中可以看出,堆棧有二種實作方式:基于數組的順序堆棧實作、類似連結清單的鍊式堆棧實作
先抽象堆棧的接口IStack:
順序堆棧(SeqStack)的實作:
鍊式堆棧(LinkStack)的實作
先定義節點Node.cs
下面是LinkStack.cs
測試代碼片段:
.Net中System.Collections.Generic.Stack<T>已經提供了堆棧的基本實作,明白原理後,仍然推薦大家使用内置的實作。