C++学习笔记49:栈
栈是一种只能从一端访问的线性数据结构,栈是一种后进先出的数据结构
//stack.h
#ifndef STACK_H
#define STACK_H
#include <cassert>
template <class T, int SIZE = > class Stack
{
private:
T list[SIZE];
int top;
public:
Stack();
void push(const T &item);
T pop();
void clear();
const T &peek() const;
bool isEmpty() const;
bool isFull() const;
}; //模板的实现
template <class T, int SIZE>
Stack<T, SIZE>::Stack():top(-){} template <class T, int SIZE> void Stack<T, SIZE>::push(const T &item)
{
assert(!isFull());
list[++top] = item;
} template <class T, int SIZE> T Stack<T, SIZE>::pop() const
{
assert(!isEmpty());
return list[top--];
} template <class T, int SIZE> const T &Stack<T, SIZE>::peek() const
{
assert(!isEmpty());
return list[top];
} template <class T, int SIZE> bool Stack<T, SIZE>::isEmpty() const
{
return top == -;
} template <class T, int SIZE> bool Stack<T, SIZE>::isFull() const
{
return top == SIZE - ;
} template <class T, int SIZE> void Stack<T, SIZE>::clear()
{
top = -;
} #endif //
栈的引用:判断是否存在不匹配的()
#include <iostream>
#include <string>
#include <cassert>
using namespace std; template <class T, int MAX = > class Stack
{
private:
T list[MAX + ];
int top;
public:
Stack();
void push(const T &item);
T pop();
const T & peek() const;
bool isEmpty() const;
}; template <class T, int MAX> Stack<T, MAX>::Stack() :top(-)
{ } template <class T, int MAX> void Stack<T, MAX>::push(const T &item)
{
if (top != MAX - )
{
list[++top] = item;
}
} template <class T, int MAX> bool Stack<T, MAX>::isEmpty() const
{
return top == -;
} template <class T, int MAX> T Stack<T, MAX>::pop()
{
assert(!isEmpty());
return list[top--];
} template <class T, int MAX> const T &Stack<T, MAX>::peek() const
{
assert(!isEmpty());
return list[top];
} void judgeBrackets(string str)
{
Stack<char>p;
int k = ;
int count = ;
while (str[k] != '\0')
{
if (str[k] == '(')
{
p.push(str[k]);
count++;
}
if (str[k] == ')')
{
if (count == )
{
cout << "NO" << endl;
count--;
break;
}
else
{
p.pop();
count--;
}
}
k++;
}
if (count == )
cout << "Yes" << endl;
if (count > )
cout << "NO" << endl;
} int main()
{
string str;
while (cin >> str)
{
judgeBrackets(str);
}
}
C++学习笔记49:栈的更多相关文章
- [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 【Linux学习笔记】栈与函数调用惯例
栈与函数调用惯例(又称调用约定)— 基础篇 记得一年半前参加百度的校招面试时,被问到函数调用惯例的问题.当时只是懂个大概,比如常见函数调用约定类型及对应的参数入栈顺序等.最近看书过程中,重新回顾了这些 ...
- IDA Pro 权威指南学习笔记(十) - 栈帧
栈帧(stack frame)是在程序的运行时栈中分配的内存块,用于特定的函数调用 如果一个函数没有执行则不需要内存,当函数被调用时就需要用到内存 1.传给函数的参数的值需要存储到函数能够找到它们的位 ...
- STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较
栈stack .队列queue 和优先级priority_queue 三者比较 默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现 ...
- jvm学习笔记:栈帧
栈帧内的数据结构 局部变量表(Local Variables):记录非静态方法的this指针.方法参数.局部变量 操作数栈(Operand Stack):用于计算的栈结构 动态链接(Dynamic L ...
- android学习笔记49——SQLite2
使用SQLite工具 位于Android SDK/tools-->sqlite3.exe,其是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口. ..... 使用特定方法操 ...
- Java学习笔记49(DBUtils工具类二)
上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自 ...
- 学习笔记49—matlab FDR校正
matlab自带函数mafdr,当ttest数较多时,可直接用[FDR, Q]=mafdr(P):但是Storey procedure在p值少于1000个时会崩溃,此时应改用BH FDR方法:mafd ...
- Android(java)学习笔记49:通过反射获取私有构造方法并且使用
1. 反射获取私有构造方法并且使用: (1)获取字节码文件.class对象: Class c = Class.forName("cn.itcast_01.Person&qu ...
随机推荐
- hive表中字段显示为NULL时,HDFS文件中存储为\N
hive数据落地到hdfs,null会默认用'\N'存储 解决方式1:利用命令(这个我没起效果) alter table adl_cici_test_fdt set serdeproperties(' ...
- Android开发——使用Jword生成本地word文档
本文主要介绍如何使用Jword生成本地word文档,这里涉及到Jword的使用技巧,本文给出相应的代码,需要的朋友可以参考下. 为什么使用Jword呢?因为IText .Freemark在安卓平台上压 ...
- python全栈开发day82-modelForm
1.jsonp内容 from django.shortcuts import render # Create your views here. def upload(request): if requ ...
- WPF: Hide grid row
http://stackoverflow.com/questions/2502178/wpf-hide-grid-row Setting all the Items in the Row to Vis ...
- ubuntu系统查看已安装的软件
1.查看安装的所有软件 dpkg -l 例如:dpkg -l | grep ftp 2.查看软件安装的路径 dpkg -L | grep ftp 也可以用 whereis ftp 3.查看软件版本 a ...
- Flink--DateSet的Transformation简单操作
flatMap函数 //初始化执行环境 val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment //加 ...
- eclipse发布web
elipse集成tomcat 在实际开发中通常在eclipse中集成tomcat,这样在开发中更方便一些.打开eclipse,选择界面下方的servers选项,点击no servers are ava ...
- if-else(职责链)
var a=1,b=2,c=3,d=4; const rules = [ { match: function (a, b, c,d) { return a;}, action: function (a ...
- solr配置IKAnalyzer抛出ClassNotFoundException
这个问题搞了很久,在QQ群上问了很久,关键很气人的是我居然被群主给开了.我也是醉了.我不知道我哪里得罪了那个solr群的群主. 废话不多说.抛出的异常如下: 刚开始一直认为是没有找到类,也就相当于没找 ...
- Excel表列名称(给定一个正整数,返回它在 Excel 表中相对应的列名称。)
例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ... 示例 1: 输入: 1 输出: "A ...