• Stack


    栈(Stack)是限定在表尾端进行插入或删除操作的线性表。因此,表尾具有特殊的含义,称之为栈顶(Top),另一端是固定的,称为栈底(Bottom)。不含任何数据元素的栈为空栈(Empty Stack)。 栈通常记为:S= (a1,a2,…,an),S是英文单词stack的第1个字母。栈中元素按a1,a2,a3,...,an的次序进栈,出栈的次序为栈顶元素。即出栈的次序与进栈相反,an第一个出栈,a1最后一个出栈。所以,栈的操作是按照后进先出(Last In First Out,简称LIFO)或先进后出(First In Last Out,简称FILO)的原则进行的,因此,栈又称为LIFO表或FILO表。 对于栈来说,主要的操作有: 1、构造空栈 2、清空栈:ClearStack() 3、求栈长(获得栈中元素的个数):StackLength() 4、返回栈顶元素:GetTop() 5、压栈操作:Push(object e) 6、弹栈操作(出栈操作):Pop() 7、判断栈是否为空:IsEmpty() 8、判断栈是否已满:IsFull()

    public class Stack
         {
             int maxsize;//顺序栈容量
             object[] data;
             int top;//栈顶
     
             //public object this[int index]
             //{
             //    get { return data[index]; }
             //    set { data[index] = value; }
             //}
     
             public int Maxsize
             {
                 get { return maxsize; }
                 set { maxsize = value; }
             }
     
             public int Top
             {
                 get { return top; }
             }
             /// <summary>
             ///初始栈 
             /// </summary>
             /// <param name="size">初始栈大小</param>
             public Stack(int size)
             {
                 data = new object[size];
                 maxsize = size;
                 top = -1;
             }
             /// <summary>
             /// 求栈长度
             /// </summary>
             /// <returns>返回长度</returns>
             public int StackLength()
             {
                 return top + 1;
             }
             /// <summary>
             /// 清空顺序栈
             /// </summary>
             public void ClearStack()
             {
                 top = -1;
                 Console.WriteLine("栈已清空");
             }
             /// <summary>
             /// 判断栈是否为空
             /// </summary>
             /// <returns></returns>
             public bool isEmpty()
             {
                 if (top == -1)
                 {
                     return true;
                 }
                 else
                 {
                     return false;
                 }
             }
             /// <summary>
             /// 判断栈是否为满
             /// </summary>
             /// <returns></returns>
             public bool isFull()
             {
                 if (top == maxsize - 1)
                 {
                     return true;
                 }
                 else
                 {
                     return false;
                 }
             }
             /// <summary>
             /// 入栈
             /// </summary>
             /// <param name="e">要压入的对象</param>
             public void Push(object e)
             {
                 if (isFull())
                 {
                     Console.WriteLine("栈已满");
                 }
                 else
                 {
                     data[++top] = e;
                 }
             }
     
             /// <summary>
             /// 出栈并返回栈顶元素
             /// </summary>
             /// <returns></returns>
             public object Pop()
             {
                 if (isEmpty())
                 {
                     Console.WriteLine("栈为空");
                     return null;
                 }
                 else
                 {
                     object temp;
                     temp = data[top--];
                     return temp;
                 }
             }
     
             public object GetTop()
             {
                 if (isEmpty())
                 {
                     Console.WriteLine("栈为空");
                     return null;
                 }
                 else
                 {
                     return data[top];
                 }
             }
         }

     原文来自http://blog.163.com/fujl_2008/blog/static/10378107200810972618942/                          

  • 相关阅读:
    python入门:字符编码
    python入门:字符串2
    使用keepalived实现高可用
    基于sersync实现实时同步
    kubeadm 的工作原理
    docker-stop不能停止容器
    kubernetes 中的证书工作机制
    docker-hub中python的tag都代表什么意思
    MFS 介绍
    安装sngrep线路抓包工具
  • 原文地址:https://www.cnblogs.com/HelloMyWorld/p/2679483.html
Copyright © 2020-2023  润新知