zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    Oracle中创建视图
    SQL Server 2012 Express安装图解
    oracle学习笔记
    Oracle中视图的创建和处理方法
    DDL、DML和DCL的理解
    ROS学习--如何结合launch文件使用参数服务器
    stm32多块开发板can总线互联卡死问题
    ROS CAN总线设备接入(二)can总线数据提取和以ros topic形式发布
    ROS CAN总线设备接入(一)Linux动态库的显式调用
    ROS .so载入undefined reference to `dlopen'问题
  • 原文地址:https://www.cnblogs.com/HaroldC/p/12437409.html
Copyright © 2011-2022 走看看