zoukankan      html  css  js  c++  java
  • 栈的初步学习

    栈有两种实现方法,其一是基于数组的栈,其二是基于链表的栈,下面是我学习到一些栈的相关操作模板(基于数组):

    class ArrayStack
    {
    public:
        ArrayStack(int s = 10);    /*初始化栈容量*/
        ~ArrayStack();
     
    public:
        int top();            /*栈顶*/
        void push(int t);        /*进栈*/
        int pop();            /*出栈*/
        bool isEmpty();        /*判空*/
        int size();            /*栈大小*/
     
    private:
        int count;            /*栈元素数量*/
        int capacity;        /*栈容量*/
        int * array;            /*底部数组*/
    };
    int ArrayStack::top()   /*栈顶*/
    {
         if (count != 0)
         {
             return array[count - 1];
         }
    };
    void ArrayStack::push(int t)  /*进栈*/
    {
         if (count != capacity)    /*是否栈满*/
         {
             array[count++] = t;   
         }
    };
    int ArrayStack::pop()    /*出栈*/
    {
         if (count != 0)    /*是否栈空*/
         {
             return array[--count];
         }
    };
    bool ArrayStack::isEmpty()   /*栈空*/
    {
         return count == 0; 
    };
    int ArrayStack::size()   /*栈大小*/
    {
         return count;
    };
    

    这种栈只能输入int型数据,如果想要输入其它类型,可以用函数模板的知识,如:

    template<typename T>
    class ArrayStack
    {
    public:
        ArrayStack(int s = 10);    /*初始化栈容量*/
        ~ArrayStack();
     
    public:
        T top();            /*栈顶*/
        void push(T t);         /*进栈*/
        T pop();            /*出栈*/
        bool isEmpty();        /*判空*/
        int size();            /*栈大小*/
     
    private:
        int count;            /*栈元素数量*/
        int capacity;        /*栈容量*/
        T * array;            /*底部数组*/
    };
    

    其它函数的定义加上虚拟类型参数即可。

  • 相关阅读:
    小程序文档
    display: flex;
    时间戳格式化
    transition-分栏按钮动画
    animation与transition区别
    放大镜
    原生js实现瀑布流效果
    Javascript获取数组中最大和最小值
    scss基础
    C/C++ XMPP/Jabber 客户端类库对比/点评 (转)
  • 原文地址:https://www.cnblogs.com/52wu244/p/6895329.html
Copyright © 2011-2022 走看看