压栈:栈的插入 *** 作叫做进栈/压栈/入栈。入数据在栈顶。
出栈:栈的删除 *** 作叫做出栈。出数据在栈顶。
1.2 栈的基本 *** 作public class TestStack { public static void main(String[] args) { Stack1.3 模拟实现s=new Stack(); //入栈 s.push(1); s.push(2); s.push(3); s.push(4); s.push(5); System.out.println(s.size()); System.out.println(s.peek()); s.pop(); s.pop(); System.out.println(s.peek()); if(s.empty()){ System.out.println("是空栈"); }else{ System.out.println("不是空栈"); } } }
public class TestStack021.4 oj题目{ E[] array=(E[])new Object[3];//栈的大小为3 int size=0;// //1.入栈 public E push(E value){ // if(top==array.length){ // System.out.println("栈已满"); // } ensureCapacity(); array[size++]=value; return value; } //2.判断为空 public boolean empty(){ if(0==size){ return true; } return false; } public int size(){ return size; } //3.取出栈顶元素 public E peek(){ if(empty()){ throw new RuntimeException("栈为空,无法获取栈顶元素"); } return array[size-1]; } //4.出栈 public E pop(){ E value=peek(); size--; return value; } public void ensureCapacity(){ if(size== array.length){ array= Arrays.copyOf(array,size*2); } } //测试该类 public static void main(String[] args) { TestStack02 ms = new TestStack02(); ms.push("hello"); ms.push("我"); ms.push("and"); ms.push("张张"); ms.push("yeap"); ms.push("!"); System.out.println(ms.size()); System.out.println(ms.peek()); System.out.println(ms.pop()); System.out.println(ms.pop()); System.out.println(ms.peek()); System.out.println(ms.empty()); } }
逆波兰表达式求值(如果是整数直接入栈,如果是运算符,取两个元素进行 *** 作后再将结果入栈)
class Solution { public int evalRPN(String[] tokens) { Stacks=new Stack<>(); for(String e : tokens){ if(!((e.equals("+")) || (e.equals("*")) || (e.equals("-")) || (e.equals("/")) )){ s.push(Integer.parseInt(e)); }else{ int right=s.pop(); int left =s.pop(); switch(e){ case"+": s.push(left+right); break; case"-": s.push(left-right); break; case"*": s.push(left*right); break; case"/": s.push(left/right); break; } } } return s.peek(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)