简单数据结构类——Stack

简介: 简单数据结构类——Stack

Stack(栈)是一个C#为我们封装更好的类。它的本质是object[]数组,只是封装了特殊的存储规则。

Stack是栈存储容器,栈是一种先进后出的数据结构,即先存入的数据后获取,后存入的数据先获取。当我们需要对各项进行后进先出的访问时,可以使用堆栈。当我们在列表中添加一项,称为推入元素;当我们从列表中移除一项时,称为弹出元素。

那么我们改如何申明Stack呢,我们可以使用以下代码来申明:

Stack stack= new Stack();//Stack在System.Collections命名空间下定义;因此,在程序中使用Stack时,必须添加System.Collections命名空间

下面列举一些Stack类常用的方法:

Count 获取栈(stack)中的元素个数
public virtual void Clear();//从 Stack 中移除所有的元素。
public virtual bool Contains( object obj );//判断某个元素是否在 Stack 中。
public virtual object Peek();//返回在 Stack 的顶部的对象,但不移除它。
public virtual object Pop();//移除并返回在 Stack 的顶部的对象。
public virtual void Push( object obj );//向 Stack 的顶部添加一个对象。
public virtual object[] ToArray();//复制 Stack 到一个新的数组中。

需要注意的是,栈的增删查改有些不同:栈中增加数据我们可以称之为压栈;而栈中不存在删除的概念,只有取的概念,即弹栈;栈无法查看指定位置的数据,只能查看栈顶的内容,即最后一个进入数组的数据,但是我们可以查看数据是否存在于栈中;栈无法改变其中的元素,只能压栈和弹栈,如果非要改栈中的内容,我们只能选择清空栈的内容。


遍历

长度

Console.WriteLine(stack.Count;

用foreach遍历,但是遍历出来的顺序是从栈顶到栈底

foreach(object item in stack)
{
Console.WriteLine(item);
}

第三种遍历方法是将栈转换为object数组,遍历出来的顺序同样是从栈顶到栈底

object[] array = stack.ToArray();
for(int i =0;i<array.Length;i++)
{
Console.WriteLine(array[i]);
}

循环弹栈

while(stack.Count>0)
{
Object o=stack.Pop();
Console.WriteLine(o);
}
Console.WriteLine(stack.Count);

由于Stack用万物之父来存储数据,所以存在装箱拆箱的概念。当我们往其中进行值类型存储时,就是在装箱;当我们将值类型对象取出来转换使用时,就是在拆箱。

目录
相关文章
|
2月前
|
C语言
数据结构------栈(Stack)和队列(Queue)
数据结构------栈(Stack)和队列(Queue)
25 0
|
4月前
|
存储
数据结构——栈(Stack)
栈(Stack)是一种常见且重要的数据结构,它遵循后进先出(Last-In-First-Out, LIFO)的原则,即最后加入的元素会是第一个被移除的。
60 4
|
6月前
|
存储 人工智能 程序员
技术心得记录:堆(heap)与栈(stack)的区别
技术心得记录:堆(heap)与栈(stack)的区别
44 0
|
6月前
|
C语言 C++
【数据结构】C语言实现:栈(Stack)与队列(Queue)
【数据结构】C语言实现:栈(Stack)与队列(Queue)
|
7月前
|
存储
【数据结构】栈(Stack)的实现 -- 详解
【数据结构】栈(Stack)的实现 -- 详解
|
存储 canal 算法
数据结构之Stack | 让我们一块来学习数据结构
数据结构之Stack | 让我们一块来学习数据结构
62 0
|
测试技术 C语言
[数据结构 -- C语言] 栈(Stack)
[数据结构 -- C语言] 栈(Stack)
|
7月前
|
算法 安全 Java
【数据结构与算法】6、栈(Stack)的实现、LeetCode:有效的括号
【数据结构与算法】6、栈(Stack)的实现、LeetCode:有效的括号
47 0
|
7月前
数据结构 模拟实现Stack栈(数组模拟)
数据结构 模拟实现Stack栈(数组模拟)
73 0
递归工作栈(Recursive Workstation Stack)
递归工作栈(Recursive Workstation Stack)是一种在计算机程序中实现递归计算的机制,通过使用栈来跟踪递归调用的过程,从而实现对复杂问题的求解。递归工作栈在解决具有自相似结构的问题时非常有用,例如计算斐波那契数列、解决迷宫问题等。
309 9