[问题描述]:对堆栈的数据进行存取操作,包括入栈、出栈和读取栈顶元素。
using System; using System.Text; using 栈 ; using 栈与队列; namespace 栈 { public class SeqStack<T> : IStack<T> { private int maxsize; private T[] data; private int top; public SeqStack(int size) { data = new T[size]; maxsize = size; top = -1; } #region //接口实现部分 public int Count() { return top + 1; } public void Clear() { top = -1; } public bool IsEmpty() { return top == -1; } public void Push(T item) { if (IsFull()) { Console.WriteLine("Stack is full"); return; } data[++top] = item; } public T Pop() { T tmp = default(T); if (IsEmpty()) { Console.WriteLine("Stack is empty"); return tmp; } tmp = data[top]; top--; return tmp; } public T Peek() { if (IsEmpty()) { Console.WriteLine("Stack is empty!"); return default(T); } return data[top]; } #endregion public bool IsFull() { return top == maxsize - 1; } public override string ToString() { StringBuilder sb = new StringBuilder(); for (int i = top; i >= 0; i--) { sb.Append(data[i] + ","); } return sb.ToString().Trim(','); } } } class Program { static void Main(string[] args) { Console.WriteLine("顺序堆栈测试开始..."); SeqStack<int> seqStack = new SeqStack<int>(10); seqStack.Push(1); seqStack.Push(2); seqStack.Push(3); Console.WriteLine(seqStack); //Console.WriteLine(seqStack.Peek()); //Console.WriteLine(seqStack); Console.WriteLine(seqStack.Pop()); Console.WriteLine(seqStack); Console.ReadLine(); } }
说点什么
欢迎讨论