• 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/                          

  • 相关阅读:
    Manjaro 安装 VMware Pro 15
    RAID-0-10 搭建和使用
    列表的切换按钮,是什么实现的?
    动态表单的设计
    如何修改自定义表单的名字,不适用diyname,直接使用id
    php关于批量替换的测试
    fastadmin删除控制器,删除菜单,提示not found
    fastadmin自定义表单,如何根据字段信息,创建表,而且,可以随时修改字段的顺序
    fastadmin如何获取新增后的id,这个可以使用模型的钩子函数。
    fastadmin如何在弹窗内跳转?以及如何在非弹窗页面,做tab选项卡
  • 原文地址:https://www.cnblogs.com/HelloMyWorld/p/2679483.html
Copyright © 2020-2023  润新知