Stack类主要定义栈的相关操作
class Stack
{
//栈 先进后出
char[] stack; //存储数据
int tos; //最顶层索引
//初始化 给空数组一个大小
public Stack(int size)
{
stack = new char[size];
tos = 0;
}
//入栈操作
public void Push(char ch)
{
if (tos == stack.Length)
{
Console.WriteLine("栈已经满了!");
return;
}
//值进栈
stack[tos] = ch;
Console.WriteLine(ch);
tos++;
}
//出栈操作
public char Pop()
{
if (tos == 0)
{
Console.WriteLine("栈已经空了!");
return (char)0;
}
//值出栈
tos--;
return stack[tos];
}
//如果栈满了 就返回true
public bool IsFull()
{
return tos == stack.Length;
}
//如果栈空了 就返回true
public bool IsEmpty()
{
return tos == 0;
}
//返回最大容量
public int Capacity()
{
return stack.Length;
}
//返回栈中当前栈中值的数量
public int GetNum()
{
return tos;
}
}
下面代码是通过主函数实现栈的先进后出
static void Main(string[] args)
{
//开辟1个栈
Stack stk1 = new Stack(10);
char ch;
int i;
//给stk1存一些值
Console.WriteLine("把A-J的值放入Stk1中.");
for ( i = 0; !stk1.IsFull(); i++)
{
stk1.Push((char)('A' + i));
}
if(stk1.IsFull())
Console.WriteLine("栈1已经满了!\n");
//打印stk1的内容
Console.WriteLine("从栈中把数据取出");
while (!stk1.IsEmpty())
{
ch = stk1.Pop();
Console.WriteLine(ch);
}
Console.WriteLine();
if(stk1.IsEmpty())
Console.WriteLine("skt1是空的");
}
运行结果如图: