zoukankan      html  css  js  c++  java
  • 自定义模板动态数组栈

    Stack.hpp

    #ifndef MYSTACK_H
    #define MYSTACK_H
    
    template<class T>
    class Stack
    {
    public:
        Stack(int len = 10)
        {
            this->size = len;
            this->top = -1;
            stackPtr = new T[len];
        }
        
        ~Stack()
        {
            if (stackPtr != nullptr)
            {
                delete[] stackPtr;
            }
    
        }
    
        void push(const T& st)
        {
            if (isFull())
            {
                cout << "栈已满" << endl;
                //exit(1);
            }
            else
            {
                this->stackPtr[++top] = st;
            }
        }
    
        void pop()
        {
            if (this->top == -1)
            {
                cout << "空栈" << endl;
                //exit(1);
            }
            else
            {
                this->stackPtr[this->top--] = 0;
            }
    
        }
    
        int getSize()
        {
            return this->top+1;
        }
    
        void print()
        {
            for (int i = 0; i < this->top+1; i++)
            {
                cout << stackPtr[i] << " ";
            }
            cout <<"-----------------------"<< endl;
        }
        int isEmpty()const { return top == -1; }
        int isFull()const { return top == size - 1; }
    
        /*T& operator[](int index)
        {
            return this->stackPtr[index];
        }*/
    
    private:
        int size; //栈中元素个数
        int top;//栈顶位置
        T* stackPtr;//保存动态数组指针
    };
    #endif

    Test.cpp

    void Test03()
    {
        Stack<int> st(8);
        st.push(1);
        st.push(3);
        st.push(5);
        st.push(7);
        st.push(9);
        cout << "stack size: " << st.getSize() << endl;
        st.print();
        st.pop();
        cout << "stack size: " << st.getSize() << endl;
        st.print();
        st.push(100);
        st.push(1000);
        cout << "stack size: " << st.getSize() << endl;
        st.print();
    
        st.pop();
        st.pop();
        st.pop();
        st.pop();
        st.pop();
        st.pop();
        st.pop();
        cout << "stack size: " << st.getSize() << endl;
        st.print();
    
        Stack<char> st1(5);
        st1.push('a');
        st1.push('b');
        st1.push('c');
        st1.push('d');
        st1.push('e');
        st1.push('f');
        cout << "stack size: " << st1.getSize() << endl;
        st1.print();
    }
  • 相关阅读:
    疲劳原理
    golang中的 time 常用操作
    access与excel
    数据结构正式篇!初探!!
    数据结构复习之C语言malloc()动态分配内存概述
    C语言字符数组与字符串
    数据结构复习之C语言指针与结构体
    c语言数组
    数据结构
    C语言腾讯课堂(一)
  • 原文地址:https://www.cnblogs.com/mmc9527/p/10455357.html
Copyright © 2011-2022 走看看