热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

栈的顺序存储结构_C#实现1[数组实现]

引用自:[陈广.数据结构(C#语言描述)]栈空条件:this._size0栈满条件:this._sizethis._array.Length非空栈中的栈顶指针始终在栈顶元素的下一个

引用自:[ 陈广.数据结构(C#语言描述)]

栈空条件:  this._size == 0
栈满条件:  this._size == this._array.Length
非空栈中的栈顶指针始终在栈顶元素的下一个位置上.

 

using System;
namespace Stack
{
    class Stack
    {
        //成员
        private object[] _array;                   //存放元素的数组
        private const int _defaultCapacity = 10;   //默认空间
        private int _size;                         //指示元素个数

        //属性
        public virtual int Count        //元素个数
        {
            get
            {
                return this._size;
            }
        }

        //构造器
        public Stack()
        {
            this._array = new object[_defaultCapacity];
            this._size = 0;

        }
        public Stack(int initialCapacity)
        {
            if (initialCapacity <0)
            {
                throw new ArgumentOutOfRangeException("栈空间不能小于零");
            }
            if (initialCapacity <_defaultCapacity)
            {
                initialCapacity &#61; _defaultCapacity;
            }
            this._array &#61; new object[initialCapacity];    //分配栈空间
            this._size &#61; 0;
        }

        //方法
        public virtual object Pop()                       //出栈
        {
            if (this._size &#61;&#61; 0)
            {
                throw new ArgumentOutOfRangeException("栈下溢");
            }
            object obj2 &#61; this._array[--this._size];      //取栈顶元素
            this._array[this._size] &#61; null;               //删除栈顶元素
            return obj2;


        }
        public virtual void Push(object obj)              //进栈
        {
            if (this._size &#61;&#61; this._array.Length)
            {
                object[] destinationArray &#61; new object[2 * this._array.Length];    //空间满则扩容为原来的2倍
                Array.Copy(this._array, 0,destinationArray, 0,this._size);
                this._array &#61; destinationArray;
            }

            this._array[this._size&#43;&#43;] &#61; obj;              //进栈

        }


    }
}

 

转:https://www.cnblogs.com/wwewbw/archive/2010/02/09/1666377.html



推荐阅读
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • 本文介绍了如何在 Spring 3.0.5 中使用 JdbcTemplate 插入数据并获取 MySQL 表中的自增主键。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • async/await 是现代 JavaScript 中非常强大的异步编程工具,可以极大地简化异步代码的编写。本文将详细介绍 async 和 await 的用法及其背后的原理。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
author-avatar
mobiledu2502884697
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有