数据结构-栈超详解

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

复杂度单次通常为 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;
}
相关推荐
算法鑫探15 小时前
闰年判断:C语言实战解析
c语言·数据结构·算法·新人首发
木子墨51615 小时前
LeetCode 热题 100 精讲 | 并查集篇:最长连续序列 · 岛屿数量 · 省份数量 · 冗余连接 · 等式方程的可满足性
数据结构·c++·算法·leetcode
2501_9219608516 小时前
双相自指图与弦论边界非对易性的结构同源
数据结构
Liangwei Lin16 小时前
洛谷 P3133 [USACO16JAN] Radio Contact G
数据结构·算法
锅挤19 小时前
数据结构复习(第五章):树与二叉树
数据结构
杨凯凡20 小时前
【014】基本类型与包装类:缓存、相等性、NPE
java·数据结构·缓存
故事和你9120 小时前
洛谷-算法1-7-搜索3
数据结构·c++·算法·leetcode·动态规划
想唱rap20 小时前
C++智能指针
linux·jvm·数据结构·c++·mysql·ubuntu·bash
会编程的土豆21 小时前
【日常做题】 代码随想录(岛屿最大面积+寻宝)
数据结构·算法·图论
疯狂打码的少年1 天前
有序线性表删除一个元素:顺序存储 vs 单链表,平均要移动多少个元素?
数据结构·算法·链表