• C++泛化栈


    栈是一种先进后出的数据结构(FILO),这里使用之前实现的动态数组实现。

    栈(stack.h)

    /*************************************************************************
    > File Name       : Stack.h
    > Author          : Harold
    > Mail            : 2106562095@qq.com
    > Github          : www.github.com/Haroldcc
    > Created Time    : 2020年03月03日  15时00分16秒
    ************************************************************************/
    
    #ifndef STACK_H_
    #define STACK_H_
    
    #include "arrayList.h"
    #include <iostream>
    
    /***** 栈 *****/
    
    /* 栈是一种特殊的链表结构,
     * 这里直接使用数组链表提供实现
     */
    template <typename T>
    class Stack
    {
    private:
        arrayList<T> list;
    
    public:
        ~Stack() {}
        int size() const;
        bool empty() const;
        void push(const T &element); // 入栈
        void pop();                  // 出栈
        T &top();                    // 获取栈顶元素
        void clear();
    
        //void output(std::ostream &out);
    };
    
    template <typename T>
    int Stack<T>::size() const
    {
        return list.size();
    }
    
    template <typename T>
    bool Stack<T>::empty() const
    {
        return list.isEmpty();
    }
    
    template <typename T>
    void Stack<T>::push(const T &element)
    {
        list.add(element);
    }
    
    template <typename T>
    void Stack<T>::pop()
    {
        list.removeByIndex(list.size() - 1);
    }
    
    template <typename T>
    T &Stack<T>::top()
    {
        return list.getElement(list.size() - 1);
    }
    
    template <typename T>
    void Stack<T>::clear()
    {
        list.clear();
    }
    
    #endif
    

    测试(testStack.cpp)

    /*************************************************************************
    > File Name       : testStack.cpp
    > Author          : Harold
    > Mail            : 2106562095@qq.com
    > Github          : www.github.com/Haroldcc
    > Created Time    : 2020年03月03日  15时14分31秒
    ************************************************************************/
    #include <iostream>
    #include "Stack.h"
    
    int main()
    {
        Stack<int> stack;
    
        stack.push(11);
        stack.push(22);
        stack.push(33);
        stack.push(44);
    
        std::cout << stack.top() << std::endl;
        stack.pop();
    
        std::cout << stack.top() << std::endl;
        stack.pop();
    
        std::cout << stack.top() << std::endl;
        stack.pop();
    
        std::cout << stack.top() << std::endl;
        stack.pop();
    
        return 0;
    }
    
    

    输出

    44
    33
    22
    11
    
  • 相关阅读:
    C#细说多线程(下)
    C#细说多线程(上)
    C#:进程、线程、应用程序域(AppDomain)与上下文分析
    C#委托与事件
    SQL Server 查询优化器运行方式
    SQL优化之索引分析
    C#反射机制
    Sql注入
    JAVA内存泄漏解决办法
    spring4声明式事务—02 xml配置方式
  • 原文地址:https://www.cnblogs.com/HaroldC/p/12437409.html
Copyright © 2020-2023  润新知