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;            /*底部数组*/
    };
    

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

  • 相关阅读:
    第36课 经典问题解析三
    第35课 函数对象分析
    67. Add Binary
    66. Plus One
    58. Length of Last Word
    53. Maximum Subarray
    38. Count and Say
    35. Search Insert Position
    28. Implement strStr()
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/52wu244/p/6895329.html
Copyright © 2011-2022 走看看