import java.util.Scanner;
public class Main {
final static int maxsize=100005;
static String[] Mystack =new String[maxsize]; //栈
static int Top=0; //栈顶指针
static boolean in(String name)
{
if(Top>=maxsize) return false;
else {
Mystack[++Top]=name;
return true;
}
}
static boolean isEmpty(){
if(Top!=0) return false;
else return true;
}
static boolean out()
{
if(isEmpty()) return false;
else{
Top--;
return true;
}
}
static String getTop()
{
if(isEmpty()) return "";
else return Mystack[Top];
}
public static void main(String[] args)
{
int N;
Scanner in=new Scanner(System.in);
N=in.nextInt();
for(int i=0;i<N;i++)
{
String op,name;
op=in.next();
name=in.next();
// System.out.println(op+" "+name);
if(op.contains("in") )in(name);
else {
while(!getTop().equals(name)){
// System.out.println(getTop());
out();
}
out();
}
}
if(isEmpty()) System.out.println("Empty");
else System.out.println(getTop());
}
}
实验总结
关于栈的定义方式,跟前面两讲一样在各种教科书上和网站都有着各个不同版本的定义方式,我们主要是学习该数据结构的实现原理,虽然实现可能千奇百怪但是我们理解原理就好,对于实现我们还是要追求简单高效即可。
本次实验,我们学习了栈的实现方式,了解了栈的原理与基本的实现方式,学有余力的同学们可以使用链表自己声明并定义链式栈,但是我们后续用不到,可以当作对自己编码能力的提升。随着我们课程的深入这些工具数据结构我们都不会再自己定义使用了,各类编程语言都给了现成的库模板等,我们都可以拿来直接而用,非常方便,这里给大家讲了,使用各语言的特性简化了自己写的代码,非常方便。