c++数据结构——栈

目录

一:栈的介绍

二:栈的函数讲解

        1:栈的定义

        2:栈的插入

        3:站的顶部元素

        4:栈的弹出

        5:是否为空

三:例题和代码

        1:题目

        2:代码 


一:栈的介绍

        栈是一种数据结构,主要特点是先进后出,就是说先进来的元素会被后面进来的元素压在底下,只有等上面的元素都出去了,自己才可以出去。下面有一幅示意图:(虽然画得不好)

c++数据结构——栈

如图,如果4不出栈,那么后面的三个元素都不能出栈,根据推理,可以得出入栈顺序为1,2,3,4,最先进去的1如果上面还有数据压着,就出不来了,所以是先进后出。 

二:栈的函数讲解

        1:栈的定义

                首先是stack,他和int差不多,只不过一个表示定义栈,一个表示定义整数。后面跟上一对<>,中间写这个栈的类型,例如:<int>,最后跟上栈的名字,如:s。下面是定义栈的示例

stack<int>s;//表示定义一个类型为int名字为s的栈

        2:栈的插入

                插入的函数是push,例如插入3:

s.push(3)

         注:插入都是从栈顶插入的。

        3:站的顶部元素

                顶部元素是top,例如输出栈顶元素:

cout<<s.top();

        注:用这个函数是,栈不能为空,否则,自己去试试吧……

        4:栈的弹出

                弹出的函数是pop,且弹出的是顶部元素,示例:

s.pop();

        注:和top一样,要先确保栈不为空。

        5:是否为空

                函数为empty,为空则返回1,反之返回0,示例:

if(s.empty()){
    cout<<"栈为空";
}
else{
    cout<<"栈不为空";
}

三:例题和代码

        1:题目

                2016: 【入门】栈(模板题)

时间限制 : 1.000 sec  内存限制 : 128 MB

题目描述

实现一个栈,栈初始为空,支持四种操作:

  1. push x – 向栈顶插入一个数 xx;
  2. pop – 从栈顶弹出一个数;
  3. empty – 判断栈是否为空;
  4. query – 查询栈顶元素。

现在要对栈进行 MM 个操作,其中的每个操作 33 和操作 44 都要输出相应的结果。

输入

第一行包含整数 MM,表示操作次数。

接下来 MM 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。

输出

对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。

其中,empty 操作的查询结果为 YES 或 NO,query 操作的查询结果为一个整数,表示栈顶元素的值。

样例输入

10
push 5
query
push 6
pop
query
pop
empty
push 4
query
empty

样例输出

5
5
YES
4
NO

提示

1≤M≤100000,
1≤x≤10^9
所有操作保证合法。 

        2:代码 

#include <bits/stdc++.h>
using namespace std;
stack<int>s;
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		string t;
		cin>>t;
		if(t=="push"){
			int n;
			cin>>n;
			s.push(n);
		}
		else
		if(t=="empty")
		{
			if(s.empty())
			cout<<"YES"<<endl;
			else
			cout<<"NO"<<endl;
		}
		else
		if(t=="pop")
		s.pop();
		else
		cout<<s.top()<<endl;
	}
	return 0;
}

上一篇:215. Kth Largest Element in an Array


下一篇:SQL SERVER事务处理