数据结构-栈超详解

栈

一种先进后出的数据结构。

复杂度单次通常为 O ( 1 ) O(1) O(1)

用途:括号匹配,倒序问题等

例子:

序列A:{1,2,3,4,5}依次入栈再同一出栈,顺序为A':{5,4,3,2,1}

代码:

插入:

cpp 复制代码
void insert(int x){
	st[++top]=x;
} 

删除:

cpp 复制代码
void erase(int x){
	--top;
}

查找栈首:

cpp 复制代码
int Top(){
	return st[top];
}

括号匹配。

每次如果搜到) 判断栈头是否为 ( 即可。例子

(((())))

步骤:
  1. 搜到 ( 入栈
  2. 搜到 ( 入栈
  3. 搜到 ( 入栈
  4. 搜到 ( 入栈
  5. 搜到 ) 判断栈首为 ) 弹出栈首
  6. 搜到 ) 判断栈首为 ) 弹出栈首
  7. 搜到 ) 判断栈首为 ) 弹出栈首
  8. 搜到 ) 判断栈首为 ) 弹出栈首
  9. 最后栈空说明是一个匹配的括号序列

代码:

cpp 复制代码
#include<iostream>

using namespace std;
const int N=1e5+5;
char st[N];
int top=0;
int main(){
	string s;
	cin>>s;
	for(auto c:s){
		if(c=='('){
			st[++top]=c;
		}else{
			if(st[top]=='('){
				--top;
			}else{
				cout<<"No";
				return 0;
			}
		}
	}
	if(top==0){
		cout<<"Yes";
	}else{
		cout<<"No";
	}
	return 0;
}
相关推荐
UIU11416 分钟前
P16237 [蓝桥杯 2026 省 B] 应急布线
数据结构·c++·算法·蓝桥杯
Nuanyt38 分钟前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
黎相思3 小时前
BTree
数据结构·b树·b+树
UIU11414 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
niyongsheng17 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
叉烧滑蛋19 小时前
B站台湾大学郭彦甫|MATLAB 学习笔记|04 变量与档案存取
数据结构
j7~19 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
not coder1 天前
一文讲通--从树到红黑树
数据结构·算法
爱吃香菜的初学者1 天前
八.数据结构——哈希表(1)
数据结构·散列表
二十七日秋1 天前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」
c语言·汇编·数据结构·c++·笔记·python·算法