Posted on 2007-03-30 09:44
dennis 閱讀(2195)
評論(1) 編輯 收藏 所屬分類:
C#歷程 、
數(shù)據(jù)結(jié)構(gòu)與算法
有了前一篇
C#鏈表的實現(xiàn),實現(xiàn)棧和隊列易如反掌。
棧,利用單向鏈表實現(xiàn):
public?abstract?class?AbstractStack
????{
????????public?abstract?Object?Pop();
????????public?abstract?void?Push(Object?obj);
????????public?abstract?bool?IsEmpty();
????????public?abstract?Object?Top();
????????public?abstract?void?Clear();
????}
????public?class?Stack?:?AbstractStack
????{
????????private?SList?list;
????????public?Stack()
????????{
????????????list?=?new?SList();
????????}
????????public?override?bool?IsEmpty()
????????{
????????????return?list.IsEmpty();
????????}
????????public?override?void?Push(Object?obj)
????????{
????????????list.Push(obj);
????????}
????????public?override?object?Pop()
????????{
????????????return?list.Pop();
????????}
????????public?override?object?Top()
????????{
????????????return?list.getTail();
????????}
????????public?override?void?Clear()
????????{
????????????list.Clear();?
????????}
????}
隊列的實現(xiàn),通過雙向鏈表實現(xiàn),對于環(huán)形數(shù)組的實現(xiàn)請參考《
數(shù)組結(jié)構(gòu)之棧與鏈表》:
?public?interface?Queue
????{
????????bool?IsEmpty();
????????void?Enqueue(Object?obj);
????????Object?Dequeue();
????????Object?First();
????}
????public?class?ListQueue:Queue
????{
????????private?LinkedList?list;
????????public?ListQueue()
????????{
????????????list?=?new?LinkedList();
????????}
????????public?bool?IsEmpty()
????????{
????????????return?list.IsEmpty();
????????}
????????public?void?Enqueue(Object?obj)
????????{
????????????list.Push(obj);
????????}
????????public?Object?Dequeue()
????????{
????????????return?list.Shift();
????????}
????????public?Object?First()
????????{
????????????return?list.getHead();
????????}
????}