`

多堆栈(C++实现)

 
阅读更多
// Type your C++ code and click the "Run Code" button!
// Your code output will be shown on the left.
// Click on the "Show input" button to enter input data to be read (from stdin).

#include <iostream>
#include <vector>
#include <stack>
using namespace std;

#define MAX_STACK_SIZE 20

template <class T>
class StackSet {
private:    
    vector<stack<T>> stacks;
    
public:    
    void push(T e);
    void pop();
    void print();
    int size();
};

template <class T>
int StackSet<T>::size() {
    return stacks.size();
}

template <class T>
void StackSet<T>::push(T e) {
    if(stacks.empty() || stacks.back().size() >= MAX_STACK_SIZE) {
        stack<T> ns;
        ns.push(e);
        stacks.push_back(ns);
    } else {
        stacks.back().push(e);
    }
}

template <class T>
void StackSet<T>::pop() {
    if(stacks.empty()) return;
    stack<T>& sp = stacks.back();
    if(sp.empty()) {
        stacks.erase(--stacks.end());
        stacks.back().pop();
    } else {
        sp.pop();
    }
}

int main() {
    StackSet<int> ss;
    for(int i = 0; i < 82; i++) ss.push(i);
    cout<<ss.size()<<endl;
    
    for(int i = 0; i < 22; i++) ss.pop();
    cout<<ss.size()<<endl;
    
    return 0;
}

 

 欢迎关注微信公众号——计算机视觉 

 

分享到:
评论

相关推荐

    堆栈的C++实现!!!

    本文将详细介绍如何使用C++实现一个简单的堆栈类。 首先,让我们了解堆栈的基本操作: 1. **入栈(Push)**:将元素添加到堆栈顶部。 2. **出栈(Pop)**:移除并返回堆栈顶部的元素。 3. **查看栈顶元素(Top)**...

    C++高效获取函数调用堆栈

    C++高效获取函数调用堆栈 在程序设计和开发过程中,出现问题是很正常的。这时候,快速找到问题所在,并确定程序的上下文环境就变得非常重要。函数调用堆栈的信息对于解决问题具有很大的帮助。传统的方法是使用 ...

    C++写括号匹配堆栈

    本题目以"C++写括号匹配堆栈"为标题,旨在通过实现一个程序来检查输入的字符串或文件中的括号是否正确配对。下面将详细讨论相关知识点。 首先,我们要了解C++语言。C++是一种强大的、面向对象的编程语言,具有高效...

    c++使用堆栈实现括号匹配问题

    c++使用堆栈实现括号匹配问题

    堆栈类的实现(C++源代码)

    ### 堆栈类的实现(C++源代码) 在计算机科学中,堆栈是一种抽象数据类型,它遵循先进后出(First In Last Out,FIFO)或后进先出(Last In First Out,LIFO)的原则。堆栈类的实现通常涉及到一系列基本操作,如...

    堆栈类Stack的C++实现

    在这个堆栈类Stack的C++实现中,我们将探讨如何设计并实现一个功能完善的堆栈类,以及如何在实际编程中应用这些概念。 首先,堆栈的基本操作包括: 1. **初始化**:创建一个空的堆栈。 2. **入栈(push)**:将...

    堆栈数据结构的c++实现

    在C++中实现堆栈,我们可以利用STL中的stack容器或者自定义一个堆栈类来完成。这里我们将详细探讨堆栈数据结构的概念、C++中的实现方式以及如何应用于购物实例。 首先,理解堆栈的基本概念。堆栈就像一个栈叠的盘子...

    计算器c++实现(用堆栈的方式实现)

    本项目采用C++编程语言,通过堆栈数据结构来实现计算器功能,包括表达式解析、错误检测以及科学计算。以下是这个项目的核心知识点: 1. **堆栈数据结构**:堆栈是一种后进先出(LIFO)的数据结构,适用于处理需要...

    C++利用堆栈实现计算器

    C++利用堆栈实现计算器,设置优先级控制符号运算顺序,可以实现长的表达式计算

    堆栈 Stack实现计算器 C++ 数据结构

    在这个“堆栈 Stack实现计算器 C++ 数据结构”的实验中,我们将探讨如何利用堆栈来实现一个简单的计算器。 首先,我们需要理解堆栈的基本操作:压栈(push)和弹栈(pop)。压栈操作是将一个元素添加到堆栈的顶部,...

    用堆栈结构(C++)实现中缀表达式转换

    本文将详细讲解如何使用C++实现这个转换过程。 首先,我们需要理解堆栈(Stack)的基本概念。堆栈是一种线性数据结构,遵循“后进先出”(LIFO, Last In First Out)的原则。在处理中缀表达式时,我们将用堆栈来...

    堆栈——用类的方法实现C++

    在这个“堆栈——用类的方法实现C++”的主题中,我们将深入探讨如何在C++编程语言中使用类来实现堆栈的数据结构。 首先,让我们定义堆栈的基本操作。堆栈有两个主要的操作:压入(push)和弹出(pop)。压入操作是...

    C++堆栈实现超长整数加法

    C++作为一种强大的编程语言,提供了丰富的数据结构和算法工具,其中之一就是堆栈(Stack)。本篇将深入探讨如何使用堆栈来实现超长整数的加法。 堆栈是一种后进先出(LIFO,Last In First Out)的数据结构,它允许...

    斐波拉切堆栈c++

    在C++代码实现中,关键在于如何有效地利用堆栈进行计算,并确保程序的正确性。由于递归深度可能会很大,不使用堆栈的直接递归可能会导致栈溢出。通过堆栈模拟递归,可以避免这个问题,提高程序的可行性。 为了更...

    C++16种堆栈实现

    ### C++16种堆栈实现 #### 概述 本文档探讨了在C++中实现堆栈数据结构的十六种方法。通过这些不同的实现方式,我们能够深入了解数据隐藏技术及其在不同编程语言(如C、Modula2、Ada)中的应用。同时,由于所有的...

    堆栈实现括号匹配

    "堆栈实现括号匹配" 堆栈是一种常用的数据结构,用于解决括号匹配问题。在本文中,我们将使用堆栈来实现括号匹配,通过使用堆栈的push和pop操作来实现括号的匹配。 堆栈的实现 在实现括号匹配之前,我们首先需要...

    堆栈实现迷宫程序

    堆栈实现迷宫源代码。需要的请赶紧下载

    数据结构C++语言(进出堆栈动画)

    在本资源中,“数据结构C++语言(进出堆栈动画)”是一个专门用C++实现的数据结构动画项目,旨在通过可视化的方式帮助学习者理解堆栈这一重要的数据结构。 堆栈是一种后进先出(Last In First Out,简称LIFO)的...

    C++ 实现堆栈stack类模板

    实现堆栈stack类模板,类模板的模型为:堆栈按数组索引减小的方向增长.

    堆栈实现的计算器,c++语言

    这个代码用c++的堆栈实现了计算器的功能,里面自定义了堆栈数据结构,下载后可以直接使用。

Global site tag (gtag.js) - Google Analytics