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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值