zoukankan      html  css  js  c++  java
  • 数据结构笔记4 栈

    栈的定义和概念

    栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。
      (
    1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。
      (
    2)当表中没有元素时称为空栈。
      (
    3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。
         栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中
    "最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。

    栈在C#中的代码实现

    using System;

    namespace EveryDayStudy.数据结构
    {
        
    public class DAPStack
        {
            
    private object[] _array;
            
    private const int _defaultCapacity = 10;
            
    private int _size;

            
    public DAPStack()
            {
                _array 
    = new object[_defaultCapacity];
                _size 
    = 0;
            }

            
    public DAPStack(int initialCapacity)
            {
                
    if (initialCapacity <0)
                {
                    
    throw new ArgumentOutOfRangeException("栈空间不能小于零");
                }
                
    if (initialCapacity <_defaultCapacity)
                {
                    initialCapacity 
    = _defaultCapacity;
                }

                _array 
    = new object[initialCapacity];
                _size 
    = 0;
            }

            
    public virtual  object Pop()
            {
                
    if (_size ==0)
                {
                    
    throw  new InvalidOperationException("栈内已经没有数据了。");
                }
                
    object obj2 = _array[--this._size];
                _array[_size] 
    = null;
                
    return obj2;
            }

            
    public virtual void Push(object obj)
            {
                
    if (_size == _array.Length)
                {
                    
    object[] destinationArray  = new object[2*_array.Length];
                    _array 
    = destinationArray;
                }
                _array[_size
    ++= obj;
            }

            
    public  virtual int Count
            {
                
    get
                {
                    
    return _size;
                }
            }

        }
    }

      其他

    其他的好像没有什么好注意的了,大概是因为栈这个结构在我们上学的时候接触的太多了,还是这个栈本来就好理解吧。

    其他的就不说了,这么晚了用本本蹭别人家的无线用写的。呵呵,有问题再改吧,等会睡觉的,明儿还上班的呢
  • 相关阅读:
    Hbase基础(十七):亿级数据从 MySQL 到 Hbase 的三种同步方案与实践(一)环境搭建
    Hbase基础(十六):扩展
    离线电商数仓(十九)之电商数据仓库系统(二)数仓分层
    离线电商数仓(十八)之电商数据仓库系统(一)数仓分层
    离线电商数仓(十七)之系统业务数据仓库数据采集(四)数据环境准备
    离线电商数仓(十六)之系统业务数据仓库数据采集(三)业务数据采集模块(二)
    离线电商数仓(十五)之系统业务数据仓库数据采集(二)业务数据采集模块(一)
    Linux ioctl调用
    dpdk Vhost 库
    vhost 控制平面 + handle_kick + VhostOps
  • 原文地址:https://www.cnblogs.com/dupeng0811/p/1520205.html
Copyright © 2011-2022 走看看