C#實現棧和佇列
有了前一篇C#連結串列的實現,實現棧和佇列易如反掌。
棧,利用單向連結串列實現:
佇列的實現,通過雙向連結串列實現,對於環形陣列的實現請參考《陣列結構之棧與連結串列》:
棧,利用單向連結串列實現:
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();
}
}
{
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();
}
}
佇列的實現,通過雙向連結串列實現,對於環形陣列的實現請參考《陣列結構之棧與連結串列》:
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();
}
}
{
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();
}
}
相關文章
- 通過佇列實現棧OR通過棧實現佇列佇列
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- 用佇列實現棧佇列
- 用棧實現佇列佇列
- 用棧實現佇列,實現Enqueue和Dequeue方法佇列ENQ
- Java面試題:棧和佇列的實現Java面試題佇列
- 兩個棧實現佇列佇列
- 佇列和棧佇列
- 棧和佇列佇列
- 資料結構-js實現棧和佇列資料結構JS佇列
- Java:基於LinkedList實現棧和佇列Java佇列
- Day 10| 232.用棧實現佇列 、 225. 用佇列實現棧佇列
- 《劍指 Offer》棧實現佇列佇列
- 用JavaScript實現棧與佇列JavaScript佇列
- 兩個棧實現佇列操作佇列
- 用2個棧實現佇列佇列
- 用兩個棧實現佇列佇列
- 利用棧實現佇列(C語言實現)佇列C語言
- leedcode-用佇列實現棧佇列
- leedcode-用棧實現佇列佇列
- Chapter 2 棧和佇列APT佇列
- 實現無鎖的棧與佇列(4)佇列
- 實現無鎖的棧與佇列(3)佇列
- 實現無鎖的棧與佇列(1)佇列
- 實現無鎖的棧與佇列(2)佇列
- 用佇列實現棧,用棧實現佇列,聽起來有點繞,都搞懂了就掌握了精髓!佇列
- 實驗四 棧和佇列的基本操作佇列
- redis之列表型別(list)——佇列和棧簡單實現Redis型別佇列
- 10月15日 棧和佇列實現迴文數字佇列
- 使用C#實現順序佇列C#佇列
- 佇列,棧佇列
- 棧、佇列佇列
- 棧-佇列佇列
- 《演算法》- 佇列和棧演算法佇列
- 面試題之【用兩個棧實現佇列】面試題佇列
- 題目9:用兩個棧實現佇列佇列
- LeetCode225.佇列實現棧LeetCode佇列
- 力扣-232. 用棧實現佇列力扣佇列