数据结构-栈超详解

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

复杂度单次通常为 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;
}
相关推荐
Elias不吃糖16 分钟前
Java 常用数据结构:API + 实现类型 + 核心原理 + 例子 + 选型与性能(完整版)
java·数据结构·性能·实现类
Hx_Ma1618 分钟前
List 转二维 List
数据结构·windows·list
Full Stack Developme24 分钟前
算法与数据结构,到底是怎么节省时间和空间的
数据结构·算法
BHXDML31 分钟前
数据结构:(三)字符串——从暴力匹配到 KMP 的跨越
数据结构·算法
不穿格子的程序员43 分钟前
数据结构篇1:不仅是存储:透视数据结构的底层逻辑与复杂度美学
数据结构·时间复杂度·空间复杂度
好奇龙猫1 小时前
【大学院-筆記試験練習:线性代数和数据结构(19)】
数据结构·线性代数
2401_841495641 小时前
【LeetCode刷题】LRU缓存
数据结构·python·算法·leetcode·缓存·lru缓存·查找
一路往蓝-Anbo1 小时前
第 2 篇:单例模式 (Singleton) 与 懒汉式硬件初始化
开发语言·数据结构·stm32·单片机·嵌入式硬件·链表·单例模式
张张努力变强2 小时前
C++ 类和对象(五):初始化列表、static、友元、内部类等7大知识点全攻略
开发语言·数据结构·c++·算法
老鼠只爱大米2 小时前
LeetCode经典算法面试题 #23:合并K个升序链表(分支法、优先队列等多种实现方案详细解析)
算法·leetcode·链表·优先队列·多路归并·分治法·合并链表