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

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

  • 相关阅读:
    台阶问题,100层台阶,1,2,3步组合走完。一种有几种组合?
    idea 导入gitlab项目
    查找学生信息
    谁是你潜在的朋友
    Sort
    统计同成绩学生人数
    打印日期
    今年的第几天?
    DayOfWeek
    日期差值
  • 原文地址:https://www.cnblogs.com/52wu244/p/6895329.html
Copyright © 2011-2022 走看看