SeqStack<T> 完整實作
using System;
namespace DataStructures
{
public class SeqStack<T> : IStack<T>
{
#region Fields & Properties
private T[] data;
private int maxSize;
private int top;
public T[] Data => data;
public int MaxSize { get => maxSize; set => maxSize = value; }
public int Top { get => top; set => top = value; }
#endregion
#region Constructors
public SeqStack() : this(10) { }
public SeqStack(int size)
{
data = new T[size];
maxSize = size;
top = -1;
}
#endregion
#region Methods
public bool IsFull => top == maxSize - 1;
#endregion
#region IStack<T> Members
public T Pop()
{
T tmp = default(T);
if (top == -1) { Console.WriteLine("堆疊為空"); return tmp; }
return data[top--];
}
public void Push(T item)
{
if (top == maxSize - 1) { Console.WriteLine("堆疊已滿"); return; }
data[++top] = item;
}
public T GetTop()
{
if (top == -1) { Console.WriteLine("堆疊為空!"); return default(T); }
return data[top];
}
#endregion
#region IDS<T> Members
public int Count => top + 1;
public void Clear() => top = -1;
public bool IsEmpty => top == -1;
#endregion
}
}