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

上海建设工程信息服务平台手机seo排名软件

上海建设工程信息服务平台,手机seo排名软件,静态网站制作模板,做黑龙头像的网站一.什么是栈 堆栈又名栈(stack),它是一种运算受限的数据结构(线性表),只不过他和数组不同,数组我们可以想象成一个装巧克力的盒子,你想拿一块巧克力,不需要改变其他巧克…

一.什么是栈

堆栈又名栈(stack),它是一种运算受限的数据结构(线性表),只不过他和数组不同,数组我们可以想象成一个装巧克力的盒子,你想拿一块巧克力,不需要改变其他巧克力的位置,而栈就相当于是一个只有上方有一个口且宽度只能容纳一块巧克力的盒子,如图:

那如果我们想拿最下面的巧克力该怎么办呢?就需要把这颗巧克力上面的所有巧克力都取出,这样才能取出最下面的巧克力。我们可以把栈想象成是一个封了底的数组,要想拿走一个值就需要把它上面的所有值都取出,同理,如果我们想加入一个数据,也只能加到栈的最顶端。这就是栈。

二.栈的具体实现 

1.手写栈

如果要手写一个栈,我们优先选择用和栈差别最小的数组模拟栈,我们要想模拟一个栈,需要拥有几个操作函数,如下。

①我们要编写push函数,作用是往栈里输入数据

     要想编写这样一个函数,我们首先需要确定数组(栈)的顶端,再把数放进去。我们可以定义一个栈的长度变量,初始值为0,你每输入一个数据就++。这样就可以很好的解决栈的输入了,我们看代码:

void push(char x) {  //top是栈的长度,M是所模拟的数组的长度,s是栈的名字,x是要往栈顶放的数if(top<M) {    //判断栈的长度不超过模拟它的数组的长度,则可以输入。top++;     //将栈顶++s[top]=x;  //把栈顶值设为x}
}

②我们要编写GetTop 函数,作用是获取栈顶的值

      这个很简单,我们直接获取数组的第top项就可以了。我们看代码:

char getTop() {return s[top];  //返回栈顶元素
}

③我们要编写弹栈函数,目的是删除栈顶元素,以取出下一个元素。

     我们可以直接让top--,这样原来的栈顶元素就不在这个栈中了,也就删除了栈顶元素。我们看代码:

void pop() {if(top>0) {  //如果栈不空top--;   //删除栈顶元素}
}

④我们要编写Getlen函数,目的是获取栈的长度。

       由于top就是代表着栈顶元素的位置,所以我们只要返回top的值就可以了。我们看代码:

int getlen() {return top;
}

接下来把所有函数都放在一起发个程序:

#include<iostream>
using namespace std;
const int M=10;   //M大小可动态调整
int s[M+1];
int top=0;
void push(int x) {if(top<M) {top++;s[top]=x;}
}
void pop() {if(top>0) {top--;} 
}
int getTop() {return s[top]; 
}
int getlen() {return top;
}int main() {return 0;
}

二.STL模板

有的人可能会说,手写栈实在太麻烦了,有没有简单的方法呢?当然有!接下来我就给大家讲。

STL模板不需要你手动定义栈中的函数,他已经给你定义好了函数和对应的栈,也不用你再用数组模拟了。但想用这个定义好了的栈,我们要导入一个头文件,如下

#include<stack>

一切准备就绪,我们要想定义一个STL栈,需要用如下代码:

stack<int>s; 

就是stack后面尖括号里写数据类型,然后再写一个栈名就可以了。

STL栈里面有一些常用的函数。

1.push,作用是往栈里输入一个数据,只不过是用栈名.push(输入的数据)的方式输入。如下:

s.push(x)

 2.top,和上面的Gettop函数的作用相同。也需要用栈名.top()的方式来调用。如下:

s.top();

3.pop,和上面的pop作用相同。如下:

s.pop();

4.size,和上面的Getlen函数作用相同。如下:

s.size();

三.例题

题目描述

假设一个表达式有英文字母(小写)、运算符(+-*/)和左右小(圆)括号构成,以 @ 作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则输出 YES;否则输出 NO。表达式长度小于 255,左圆括号少于 20 个。

输入格式

一行:表达式。

输出格式

一行:YES 或 NO

输入输出样例

输入 #1复制

2*(x+y)/(1-x)@

输出 #1复制

YES

输入 #2复制

(25+x)*(a*(a+b+b)@

输出 #2复制

NO

说明/提示

表达式长度小于 255,左圆括号少于 20 个。

 程序 (装逼代码)

#include<bits/stdc++.h>
using namespace std;
stack<char> a;
int main() {string s;cin>>s;for(int i=0; i<s.length(); i++) {if(s[i]=='(') {a.push(s[i]);}if(s[i]==')') {if(a.size()>=1&&a.top()=='(') {a.pop();} else {cout<<"NO";return 0;}}}if(a.size==0)cout<<"YES";else cout<<"NO";return 0;
}

http://www.yidumall.com/news/35316.html

相关文章:

  • 网站开发岗位说明书seo推广是什么工作
  • 设计网站推荐外网seo网站建设公司
  • 网站代备案便宜雅诗兰黛网络营销策划书
  • 炫酷个人网站php源码北京网站优化外包
  • 做身份证网站发外链比较好的平台
  • 菏泽做企业网站企业seo推广
  • discuz论坛网站做的门户谈谈自己对市场营销的理解
  • wordpress 设置用户权限河北优化seo
  • 网站首页的滚动大图怎么做2022最新时事新闻及点评
  • 网站banner背景百度搜图片功能
  • 做博客网站石家庄关键词快速排名
  • 网站搜索优化怎么做加盟教育培训哪个好
  • 重庆做网站好的公司网络营销品牌案例
  • 怎样推荐企业建设网站和互联网推广掉发脱发严重是什么原因
  • 腾讯的网站建设用了多少钱网站seo优化方法
  • seo网络优化合肥seo优化外包公司
  • 最超值的手机网站建设百度免费推广怎么操作
  • 手机怎么防止网站跳转怎么做游戏推广员
  • wordpress 定时 检查seo广告
  • jsp商务网站建设温州seo网站推广
  • 域名有了怎么建网站长沙网络营销公司
  • 怎么制作一个个人网站杭州网站关键词排名优化
  • 怎么查寻一个网站做的竞价全网推广成功再收费
  • 竞价推广关键词seo赚钱方法大揭秘
  • 给公司建立网站青岛seo排名公司
  • 阿勒泰网站建设福州百度关键词排名
  • 网站建设应该注意什么今日实时热搜
  • wordpress做社交网站吗企业网站定制开发
  • 模仿网站页面违法吗百度新闻首页新闻全文
  • 个人网站建设作用网络推广的话术怎么说