网站建设方案拓扑图,企业网站定制,公司做网站需要提供什么条件,东平县建设局网站CSDN的各位uu们你们好,今天千泽带来了栈的深入学习,我们会简单的用代码实现一下栈,
接下来让我们一起进入栈的神奇小世界吧!0.速览文章一、栈的定义1. 栈的概念2. 栈的图解二、栈的模拟实现三.栈的经典使用场景-逆波兰表达式总结一、栈的定义
1. 栈的概念
栈#xff1a;一种…CSDN的各位uu们你们好,今天千泽带来了栈的深入学习,我们会简单的用代码实现一下栈,
接下来让我们一起进入栈的神奇小世界吧!0.速览文章一、栈的定义1. 栈的概念2. 栈的图解二、栈的模拟实现三.栈的经典使用场景-逆波兰表达式总结一、栈的定义
1. 栈的概念
栈一种特殊的线性表其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶另一端称为栈底。栈中的数据元素遵守后进先出LIFOLast In First Out的原则。
2. 栈的图解 压栈栈的插入操作叫做进栈/压栈/入栈入数据在栈顶。 出栈栈的删除操作叫做出栈。出数据在栈顶。 可以看出,入栈和出栈会改变栈顶.
二、栈的模拟实现
Java集合中的Stack类在底层是一个顺序表 , 那么我们可以简单的用一个数组来模拟栈
import java.util.Arrays;public class MyStack {public int [] elem;public int usedSize;public MyStack() {this.elem new int [5];}public void push(int val){if(isFull()){this.elem Arrays.copyOf(this.elem,2*this.elem.length);}this.elem[this.usedSize] val;this.usedSize;}public boolean isFull(){return this.usedSize elem.length;}public int pop(){if(isEmpty()){throw new RuntimeException(栈为空!);}int OldValue this.elem[usedSize - 1];this.usedSize--;return OldValue;}public int peek(){if(isEmpty()){throw new RuntimeException(栈为空!);}return this.elem[usedSize - 1];}public boolean isEmpty(){return this.usedSize 0;}
}
友友们可以动手实践一下,数据结构一定要多写多画图多总结! 三.栈的经典使用场景-逆波兰表达式
现在,我们了解了栈的相关代码写法, 那么我们一起来看一下栈在题目中的应用 150. 逆波兰表达式求值 https://leetcode.cn/problems/evaluate-reverse-polish-notation/ 解法:
在这里插入代码片import java.util.Stack;public class 逆波兰 {int i 0 ;public int evalRPN(String[] tokens) {StackInteger stack new Stack();for(int i 0; i tokens.length; i){String val tokens[i];if(isOperation(val) false){stack.push(Integer.parseInt(val));}else {int num1 0;int num2 0;switch (val){case :num2 stack.pop();num1 stack.pop();stack.push(num1 num2);break;case -:num2 stack.pop();num1 stack.pop();stack.push(num1 - num2);break;case *:num2 stack.pop();num1 stack.pop();stack.push(num1 * num2);break;case /:num2 stack.pop();num1 stack.pop();stack.push(num1 / num2);break;}}}return stack.pop();}public boolean isOperation(String str){if(str.equals() || str.equals(-) || str.equals(*) || str.equals(/)){return true;}return false;}
}
总结
今天栈的相关内容就到这里,祝你学习进步,感谢你的支持!