21xrx.com
2024-06-03 04:42:02 Monday
登录
文章检索 我的文章 写文章
C++中使用头文件stack
2023-07-11 15:07:51 深夜i     --     --
C++ 头文件 stack

在C++中,使用头文件stack可以方便地实现栈结构。栈是一种LIFO(后进先出)的数据结构,也就是说最后进入栈中的元素最先被取出。栈在程序中有广泛的应用,比如表达式求值、括号匹配、深度优先搜索等。

首先需要在程序中包含头文件stack:


#include <stack>

接下来定义一个stack对象:


stack<int> s;

这里定义的是一个存储整型数据的栈。可以根据实际情况定义不同类型的栈。

向栈中压入一个元素:


s.push(1);

从栈中弹出一个元素:


s.pop();

获取栈顶元素:


int t = s.top();

获取当前栈中元素个数:


int sz = s.size();

判断栈是否为空:


bool flag = s.empty();

使用栈实现括号匹配

括号匹配是栈的一个常见应用。实现思路是遍历字符串,如果遇到左括号就将其入栈,如果遇到右括号就将栈顶元素弹出并与之匹配。如果最后栈中没有元素,说明所有括号都匹配成功。


bool check(string s){

  stack<char> stk;

  for(int i=0;i<s.size();i++){

    if(s[i]=='(' || s[i]=='[' || s[i]=='{'){

      stk.push(s[i]);

    }

    else{

      if(stk.empty()) return false;

      char c = stk.top(); stk.pop();

      if(s[i]==')' && c!='(') return false;

      if(s[i]==']' && c!='[') return false;

      if(s[i]=='}' && c!='{') return false;

    }

  }

  return stk.empty();

}

上面的代码实现了三种括号的匹配。如果输入的字符串中含有其他字符,可以在遍历字符串时做判断忽略掉。

总之,在C++中使用头文件stack可以有效地实现栈结构。尤其是对于栈的常见应用场景,如括号匹配、表达式求值等,使用stack能让代码更加简洁易懂。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复