c++语言之stack的基本使用

本文详细介绍C++中的栈数据结构及其操作方法,包括压栈、出栈、清空栈等,并提供了一个综合示例代码,帮助读者理解栈的操作流程。
部署运行你感兴趣的模型镜像

解释:

   如果用一种东西去形容他,那就是一头封闭的,一头开放的单行道。里面想要出来,就必须你后面进去的人先出来。里面容纳的人数,就是空间大小数目(maxsize)。

方法:stack<typer> mystack;(定义)

  void push(typer);   该方法就是添加一个typer类型的入栈。

  void pop();            该方法就是在栈中出一个typer类型的元素。但不返回,该元素,只是出栈而已。

  typer top();           该方法就是返回栈的头顶元素。

  boolean empty();  该方法就是返回栈为不为空,空就是true,不空就是false;

  void size();            该方法就是返回一个数字,表示里面的栈的元素的个数。

详细一点的解释:

通过一个代码解释一下所以的方法吧!

题目:

输入各个命令,它们对应的格式如下: 
压入堆栈:push a,a代表压入堆栈的元素,这里push和元素之间用空格分隔。
清空堆栈:clear
获取栈顶元素:top
弹出栈顶元素:pop
当输入的命令为exit时,程序结束。
当输入的命令为pop时,请输出弹出的元素值。
当输入的命令是top时,请输出当前栈顶元素值。
注意,如果没有满足的元素,请输出None。

代码:

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


int main()
{
    stack<int> mystack;
    string str;
    while (cin>>str)
    {
        if (str == "exit")
            break;
        else if (str == "pop")
        {
            if (mystack.size() == 0)
                cout<<"None"<<endl;
            else
            {
                int k = mystack.top();
                mystack.pop();
                cout<<k<<endl;
            }
        }
        else if (str == "top")
        {
            if (mystack.size() == 0)
                cout<<"None"<<endl;
            else
                cout<<mystack.top()<<endl;
        }
        else if (str == "clear")
        {
            while(!mystack.empty())
                mystack.pop();
        }
        else if (str == "push")
        {
            int k;
            cin>>k;
            mystack.push(k);
        }
    }
    return 0;
}

该代码详细的介绍了方法的使用。每一个的方法使用,比较综合。可以借鉴一下。

 

以上就是stack在c++中的基本使用规则。

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

### C++ 中 `stack` 的使用与实现 #### 定义与引入 在C++标准模板库(STL)中,`stack` 是一种容器适配器,提供了后进先出(LIFO, Last In First Out)的数据结构特性。为了使用这个数据结构,需要包含头文件 `<stack>`。 ```cpp #include <stack> ``` #### 基本操作方法 - **push()**: 向顶添加新元素。 - **pop()**: 移除位于顶的元素。 - **top()**: 访问顶元素而不移除它[^2]。 - **empty()**: 判断是否为空,返回布尔值[^3]。 - **size()**: 返回当前内元素的数量。 #### 创建并初始化 Stack 实例 可以创建不同类型的实例,默认情况下会基于双端队列(deque),也可以指定其他底层容器如vector或list来构建。 ```cpp // 使用默认deque作为内部容器 std::stack<int> myStack; // 显式指明使用vector作为内部容器 std::stack<float,std::vector<float>> floatVectorStack; ``` #### 示例代码展示基本功能 下面这段简单的例子展示了如何向中压入元素、查询顶部元素以及弹出元素: ```cpp #include <iostream> #include <stack> int main(){ std::stack<std::string> strStack; // 添加元素到中 strStack.push("first"); strStack.push("second"); // 输出最上面的一个字符串但不删除它 std::cout << "Top element is : " << strStack.top() << '\n'; // 删除最上方的元素 strStack.pop(); // 再次查看现在的顶端元素 std::cout << "New top element after pop(): " << strStack.top() << "\n"; // 检查是否为空 if(strStack.empty()){ std::cout<<"The stack is now empty.\n"; } } ``` 此段代码首先建立了存储字符串类型对象的标准,并执行了一系列典型的操作:依次加入两个元素;通过调用 `top()` 方法获取最新加入的那个元素的信息而未将其移除;接着利用 `pop()` 函数实际去除了该元素;最后再次打印新的顶元素,并测试整个的状态以确认其非空状态。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值