数据结构-栈超详解

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

复杂度单次通常为 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;
}
相关推荐
TracyCoder12315 小时前
LeetCode Hot100(21/100)——234. 回文链表
算法·leetcode·链表
数智工坊16 小时前
【数据结构-栈】3.1栈的顺序存储-链式存储
java·开发语言·数据结构
执着25916 小时前
力扣102、二叉树的层序遍历
数据结构·算法·leetcode
元亓亓亓16 小时前
考研408--数据结构--day5--栈与队列的应用
数据结构·考研··408·队列
小高Baby@16 小时前
Golang中面向对象的三大特性之多态的理解
数据结构·golang
dazzle16 小时前
Python数据结构(十五):归并排序详解
数据结构·python·算法
.ZGR.16 小时前
认识数据结构:图——无人机防空平台的“衍生品”
java·开发语言·数据结构
晚风吹长发17 小时前
初步了解Linux中的线程同步问题及线程安全和死锁与生产消费者模型
linux·运维·服务器·开发语言·数据结构·安全
一只专注api接口开发的技术猿17 小时前
淘宝商品详情API的流量控制与熔断机制:保障系统稳定性的后端设计
大数据·数据结构·数据库·架构·node.js
smj2302_7968265217 小时前
解决leetcode第3826题.最小分割分数问题
数据结构·python·算法·leetcode