了解集合本质必须要知晓的概念02-堆栈

在"了解集合本质必须要知晓的概念-链表"中,我们了解了链表的概念和种类,并且模拟了一个单向链表。本篇体验的堆栈是约束版的链表,只能在栈顶接收新节点和释放节点。

堆栈的主要操作是压栈和出栈。压栈是将新节点放在栈顶,出栈是从栈顶取出一个节点,返回新弹出节点的数据项。堆栈也称为后进先出的数据结构。

接着上一篇,写一个派生于List的类来模拟堆栈的压栈和出栈。

namespace LinkedListLibrary
{
    public class StackInheritance : List
    {
        public StackInheritance() : base("stack"){}

        public void Push(object dataValue)
        {
            InsertAtFront(dataValue);
        }

        public object Pop()
        {
            return RemoveFromFront();
        }
    }
}

客户端调用。

        public static void Main(string[] args)
        {
            StackInheritance stack = new StackInheritance();

            bool aBoolean = true;
            char aChar = ‘a‘;
            int anInt = 12;
            string aStr = "hello";

            stack.Push(aBoolean);
            stack.Display();
            stack.Push(aChar);
            stack.Display();
            stack.Push(anInt);
            stack.Display();
            stack.Push(aStr);
            stack.Display();

            try
            {
                while (true)
                {
                    object removedObject = stack.Pop();
                    Console.WriteLine(removedObject + "被弹出~~");
                    stack.Display();
                }
            }
            catch (EmptyListException emptyListException)
            {
                Console.Error.WriteLine(emptyListException.StackTrace);
            }
            Console.ReadKey();
        }

参考资料:

Visual C# 2008大学教程--(第三版)

“了解集合本质必须要知晓的概念”系列包括:

了解集合本质必须要知晓的概念01-链表

了解集合本质必须要知晓的概念02-堆栈

了解集合本质必须要知晓的概念03-队列

了解集合本质必须要知晓的概念02-堆栈

时间: 2024-08-30 03:42:54

了解集合本质必须要知晓的概念02-堆栈的相关文章

了解集合本质必须要知晓的概念03-队列

队列和堆栈都是约束版的链表,就像在超市购物,队列是先进先出的数据结构. 接着上一篇,派生于链表类List,来模拟一个队列. namespace LinkedListLibrary { public class QueueInheritance : List { public QueueInheritance() : base("queue"){} //入队:到最后面 public void Enqueue(object dataValue) { InsertAtBack(dataVal

了解集合本质必须要知晓的概念04-二叉查找树

与链表.堆栈和队列不一样,二叉查找树不是线性数据结构,是二维数据结构.每个节点都包含一个LeftNode和RightNode,二叉查找树把比节点数据项小的数据放在LeftNode,把比节点数据项大的数据放在RightNode. 关于节点的类. public class TreeNode<T> { public T Element { get; set; } public TreeNode<T> LeftNode { get; set; } public TreeNode<T&

openGL一些概念02

着色器程序 着色器程序对象(Shader Program Object)是多个着色器合并之后并最终链接完成的版本. 如果要使用刚才编译的着色器我们必须把他们链接为一个着色器程序对象,然后在渲染对象的时候激活这个着色器程序. 已激活着色器程序的着色器将在我们发送渲染调用的时候被使用. 当链接着色器至一个程序的时候,它会把每个着色器的输出链接到下个着色器的输入. 创建程序对象: GLuint shaderProgram; shaderProgram = glCreateProgram(); glCr

postman——集合——执行集合——测试脚本——pm对象简单示例02

//1.验证返回状态码是否是200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); //2.验证返回body内是否含有某个值 pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_sear

十四、C# 支持标准查询运算符的集合接口

支持标准查询运算符的集合接口. System.Linq.Enumeralbe类提供的一些常用的API 来执行集合处理 1.匿名类型 2.隐匿类型的局部变量 3.集合初始化器 4.集合 5.标准查询运算符 本章主要讨论泛型集合接口. 非泛型的集合类,待查. 一.匿名类型和隐式类型的局部变量声明 C#3.0增强. 1.匿名类型 一种特殊的数据类型,它最终是由编译器声明的,而非通过已定义好的类来声明的. 和匿名函数相似,当编译器看到一个匿名类型时,会自动执行一些后台操作,生成必要的代码, 允许像显式声

解读Cardinality Estimation&lt;基数估计&gt;算法(第一部分:基本概念)

基数计数(cardinality counting)是实际应用中一种常见的计算场景,在数据分析.网络监控及数据库优化等领域都有相关需求.精确的基数计数算法由于种种原因,在面对大数据场景时往往力不从心,因此如何在误差可控的情况下对基数进行估计就显得十分重要.目前常见的基数估计算法有Linear Counting.LogLog Counting.HyperLogLog Counting及Adaptive Counting等.这几种算法都是基于概率统计理论所设计的概率算法,它们克服了精确基数计数算法的

面向对象 集合篇

集合概念: 集合本质上是一个动态数组 2.命令引用:using system.collections 2.1 Arratlist 属性(count) 数量 .属性2(capactity) 有几个位子 //集合里包括属性和方法2.2 arratlist list =new arraylist(); list.add(欲添加的值) object 类型的 为什么这里可以使object 类型的? 是因为object 是所有类型的父类,父类引用指向子类对象 所有类型都可以放在集合中去. 2.3 集合与数组

当你编码时你在做什么:谈编程的本质(一)状态机

当你编码时你在做什么:谈编程的本质(一)状态机 这学期学习了两门有意思的课,Theory of Computation和Distributed System,一低一高完全两个层次上的分支,却意外地发现两者在理论方面的重叠--那就是状态机.在Theory of Computation中,DFA.NFA.Turing Machine都是非常经典的State Machine,而在Distributed System中,Global State的确定.一致性协议的Replicated State Mac

小何讲进程: Linux进程的基本概念

1.  进程定义 进程是操作系统理论的核心与基础,操作系统中的许多概念都和进程相关. 进程的定义 ,进程有过各种各样的定义,现列举较为著名的几种. 进程是一个独立的可调度的活动: 进程是一个抽象实体,当它执行某个任务时,要分配和释放各种资源: 进程是可以并行执行的计算单位: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动: 进程是一个程序的一次执行过程,同时也是资源分配的最小单元. 进程和程序是有本质区别的: 程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念