当前位置: 首页 > news >正文

栈相关代码

Stack.h

//
//  Stack.hpp
//  FirstP
//
//  Created by 赫赫 on 2023/11/1.
//  这里主要记录一下顺序栈#ifndef Stack_hpp
#define Stack_hpp
#define MaxSize 10#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>#endif /* Stack_hpp */typedef struct{int data[MaxSize];int top;//栈顶指针
}SqStack;//初始化栈
void InitStack(SqStack &S);//入栈
bool Push(SqStack &S,int elem);//出栈
bool Pop(SqStack &S,int &elem);//出栈
bool Pop(SqStack &S,char &elem);//读栈顶元素
bool GetTop(SqStack &S,int &elem);//用栈来实现表达式的括号匹配
bool bracketCheck(char str[],int length);//---------------------------------
//共享栈的结构体定义
typedef struct{int data[MaxSize];int top0;//栈顶指针int top1;
}SqShareStack;//初始化共享栈
void InitShareStack(SqShareStack &S);

Stack.cpp

//
//  Stack.cpp
//  FirstP
//
//  Created by 赫赫 on 2023/11/1.
//#include "Stack.hpp"//初始化栈
void InitStack(SqStack &S){S.top=-1;//初始化栈顶指针
}//入栈
bool Push(SqStack &S,int elem){if(S.top==MaxSize-1){return false;}else{S.top+=1;S.data[S.top]=elem;return true;}
}//出栈
bool Pop(SqStack &S,int &elem){if(S.top==-1){return false;}else{elem=S.data[S.top];S.top-=1;return true;}
}bool Pop(SqStack &S,char &elem){if(S.top==-1){return false;}else{elem=S.data[S.top];S.top-=1;return true;}
}//读栈顶元素
bool GetTop(SqStack &S,int &elem){if(S.top==-1){return false;}else{elem=S.data[S.top];return true;}
}//用栈来实现括号表达式的匹配
bool bracketCheck(char str[],int length){SqStack S;InitStack(S);for(int i=0;i<length;i++){if(str[i]=='('||str[i]=='['||str[i]=='{'){Push(S,str[i]);}else{if(S.top==-1){//栈空return false;}char topElem;Pop(S,topElem);if(str[i]==')'&&topElem!='('){return false;}if(str[i]==']'&&topElem!='['){return false;}if(str[i]=='}'&&topElem!='{'){return false;}}}if(S.top==-1){//栈空return true;}else{return false;}
}//初始化共享栈
void InitShareStack(SqShareStack &S){S.top0=-1;S.top1=MaxSize;//当top0+1=top1时共享栈满
}

相关文章:

  • [hive]中的字段的数据类型有哪些
  • 关于ROS的网络通讯方式TCP/UDP
  • 68 内网安全-域横向PTHPTKPTT哈希票据传递
  • Redis的持久化机制
  • 如何在苹果Mac系统设置中查看Wi-Fi密码?
  • 阿里云二级域名绑定与宝塔Nginx反向代理配置
  • 前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
  • 竞赛选题 深度学习实现语义分割算法系统 - 机器视觉
  • Ubuntu:解决PyCharm中不能输入中文或者输入一个中文解决方法
  • 【Python语言速回顾】——数据可视化基础
  • GZ035 5G组网与运维赛题第8套
  • 如何发布自己的golang库
  • 元素的水平居中和垂直几种方案
  • 新技术前沿-2023-应用GPT提问模板写技术文章
  • 什么是Web 3.0?
  • 【comparator, comparable】小总结
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Hibernate最全面试题
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • nginx 配置多 域名 + 多 https
  • Python学习之路16-使用API
  • Spring框架之我见(三)——IOC、AOP
  • 给新手的新浪微博 SDK 集成教程【一】
  • 和 || 运算
  • 基于组件的设计工作流与界面抽象
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 使用putty远程连接linux
  • 你对linux中grep命令知道多少?
  • NLPIR智能语义技术让大数据挖掘更简单
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (译) 函数式 JS #1:简介
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • *上位机的定义
  • .FileZilla的使用和主动模式被动模式介绍
  • .libPaths()设置包加载目录
  • .Net core 6.0 升8.0
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .Net下的签名与混淆
  • @SentinelResource详解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [CentOs7]图形界面