堆棧是一種後進先出的數據結構,在某些程序設計中經常用到。堆棧只能取得棧頂元素、壓棧、出棧 、取得棧內元素數量及判斷是否為空等操作。
堆棧可以用順序表、鏈表實現,有了前面順序表及鏈表,堆棧實現非常簡單,這裡用單鏈表實現。
1.實現代碼
/*
* File : Stack.cs
* Author : Zhenxing Zhou
* Date : 2008-12-07
* Blog : http://www.xianfen.net/
*/
namespace Xianfen.Net.DataStructure
{
public class Stack<T>
{
protected SingleLinkedList<T> m_List;
public int Count
{
get { return m_List.Count; }
}
public bool IsEmpty
{
get { return m_List.IsEmpty; }
}
public Stack()
{
m_List = new SingleLinkedList<T>();
}
public Stack(T t)
{
m_List = new SingleLinkedList<T>(t);
}
public T Pop()
{
T t = m_List.GetTail();
m_List.RemoveTail();
return t;
}
public T Top()
{
return m_List.GetTail();
}
public void Push(T t)
{
m_List.AddTail(t);
}
}
}
2.應用示例
一個及其無聊的字符串翻轉程序。
char[] ch = "hello world!".ToCharArray();
Stack<char> s = new Stack<char>();
foreach (char c in ch)
{
s.Push(c);
}
int idx = 0;
while (!s.IsEmpty)
{
ch[idx++] = s.Pop();
}
Console.WriteLine(new string(ch));