using System;
public class MyStack<T>
{
T[] arr;
int count=0;
int copacity = 0;
public MyStack()
{
arr = new T[count];
}
public MyStack(int a)
{
if (a > count)
{
arr = new T[a];
copacity = a;
}
else
{
arr = new T[count];
copacity = count;
}
}
public int Count
{
get { return this.count; }
}
//添加数据
public void Push(T name)
{
T[] arrT = arr;
if (count == copacity)
{
arr = new T[count + 1];
for (int i = 0; i < count; i++)
{
arr[i] = arrT[i];
}
arr[count] = name;
}
else if (count < copacity)
{
arr[count] = name;
}
else
{
arr = new T[count + 1];
for (int i = 0; i < count; i++)
{
arr[i] = arrT[i];
}
arr[count] = name;
}
count++;
}
//出栈
public T Pop()
{
try
{
T name = arr[count-1];
arr[count - 1] = default(T);
T[] arrT = arr;
count--;
if (count > copacity)
{
arr = new T[count];
for (int i = 0; i < count; i++)
{
arr[i] = arrT[i];
}
}
return name;
}
catch
{
throw new Exception("没有数据,不能取钱");
}
}
//移除所有数据
public void Clear()
{
int j = count;
for (int i = 0; i < j; i++)
{
Pop();
}
}
//返回栈顶数据
public T Peek()
{
try
{
return arr[count - 1];
}
catch
{
throw new Exception("小子你钱包空了,不用再看了");
}
}
//确定某元素是否在stack中
public bool Contains(T name)
{
for (int i = 0; i < count; i++)
{
if (arr[i].Equals(name))
{
return true;
}
}
return false;
}
}
自定义栈Stack<T>
最新推荐文章于 2023-07-16 13:41:14 发布