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

原文链接: https://www.cnblogs.com/HaroldC/p/12437409.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++泛化栈

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/333891

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午9:24
下一篇 2023年3月1日 下午9:24

相关推荐