Stack本质
Stack(栈)是一个C#为我们封装好的类
它的本质也是object[]数组,只是封装了特殊的存储规则
Stack是栈存储容器,栈是一种先进后出的数据结构
栈无法改变其中的元素 只能压(存)和弹(取)
实在要改 只有清空
申明
需要引用命名空间 System.Collections
Stack stack = new Stack();
压栈
stack.Push(1);
stack.Push("123");
stack.Push(true);
stack.Push(1.2f);
stack.Push(new Test());
出栈
object v = stack.Pop();
Console.WriteLine(v);
查看栈顶元素 查看元素是否存在
栈无法查看指定位置的 元素
只能查看栈顶的内容
v = stack.Peek();
Console.WriteLine(v);
v = stack.Peek();
Console.WriteLine(v);
查看元素是否存在于栈中
if( stack.Contains("123") )
{
Console.WriteLine("存在123");
}
遍历
1.长度
Console.WriteLine(stack.Count);
2.用foreach遍历
遍历出来的顺序 是从栈顶到栈底
foreach(object item in stack)
{
Console.WriteLine(item);
}
3.还有一种遍历方式
将栈转换为object数组
遍历出来的顺序 也是从栈顶到栈底
object[] array = stack.ToArray();
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]);
}
Console.WriteLine(stack.Count);
4.循环弹栈
while( stack.Count > 0 )
{
object o = stack.Pop();
Console.WriteLine(o);
}
Console.WriteLine(stack.Count);
cs
class Program
{
Stack stack = new Stack();
public static void Main()
{
Console.WriteLine("请输入10进制的正整数");
int a;
a=int.Parse( Console.ReadLine());
Program program = new Program();
program. To2Form(a);
Console.Write("转换结果");
while (program.stack.Count > 0)
{
Console.Write(program.stack.Pop());
}
}
protected void To2Form(int a)
{
int y;
while (a>=1)
{
y=a % 2;
a= a / 2;
stack.Push(y);
}
}
}