这篇文章主要介绍了Java模拟栈实现及Stack类使用的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java模拟栈实现及Stack类使用的方法是什么文章都会有所收获,下面我们一起来看看吧。
栈是一种数据结构,它按照后进先出的原则来存储和访问数据。这意味着最后添加到栈中的元素最先被访问和移除,而最先添加到栈中的元素最后被访问和移除。
栈的基本操作包括入栈(push)
,即将元素添加到栈顶;出栈(pop)
,即将栈顶元素移除;以及访问栈顶元素(peek)
。
(1)在Java
中,Stack
的底层是用数组来装数据,所以我们这里就用数组来模拟。
public class MyStack { //装数据 private int[] data; //栈中的数据个数 public int useSize;//初始值为0 public MyStack(){ //初始空间为 10 data = new int[10]; } //返回栈中的元素个数 public int size(){ return useSize; } }
(2)入栈:当空间满了后扩容。
//扩容 public void capacity(){ this.data = Arrays.copyOf(this.data, (int) (1.5 * this.data.length)); } //判断是否满了, public boolean isFull () { return useSize == this.data.length; } //入栈,返回插入成功的值 public int push(int val){ if(isFull()){ capacity(); } this.data[useSize] = val; useSize++;//useSize 始终指向的是栈顶元素的下一个位置。 return val; }
(3)出栈:
//判断是否为空 public boolean isEmpty() { return useSize == 0; } //出栈,返回出栈的值 public int pop(){ if(isEmpty()){ throw new NullPointerException("栈空"); } return this.data[--useSize]; }
(4)查看栈顶元素:
//查看栈顶元素 public int peek(){ if(isEmpty()){ throw new NullPointerException("栈空"); } return this.data[useSize - 1]; }
public class MyStack { //装数据 private int[] data; //栈中的数据个数; private int useSize; public MyStack(){ //初始空间为 10 this.data = new int[10]; } //扩容 public void capacity(){ this.data = Arrays.copyOf(this.data, (int) (1.5 * this.data.length)); } //判断是否满了, public boolean isFull () { return useSize == this.data.length; } //入栈,返回插入成功的值 public int push(int val){ if(isFull()){ capacity(); } this.data[useSize] = val; useSize++;//useSize 始终指向的是栈顶元素的下一个位置。 return val; } //判断是否为空 public boolean isEmpty() { return useSize == 0; } //出栈,返回出栈的值 public int pop(){ if(isEmpty()){ throw new NullPointerException("栈空"); } return this.data[--useSize]; } //查看栈顶元素 public int peek(){ if(isEmpty()){ throw new NullPointerException("栈空"); } return this.data[useSize - 1]; } //返回栈中的元素个数 public int size(){ return useSize; } }
在Java
中,Stack
是一个类,表示栈数据结构的实现。它继承自Vector
类,因此具有Vector
类的所有方法,并且还提供了堆栈操作的额外方法。Stack
类实现了栈数据结构的基本操作,包括将元素压入栈顶、从栈顶弹出元素、查看栈顶元素等。
构造方法 | 描述 |
---|---|
Stack() | 创建一个空堆栈 |
方法 | 描述 |
---|---|
E push(E item) | 将元素压入栈顶部 |
E pop() | 移除栈顶部的元素并返回该元素 |
E peek() | 返回栈顶部的元素而不移除它 |
int size() | 获取栈中有效元素个数 |
boolean empty() | 测试栈是否为空 |
int search(Object o) | 返回对象在堆栈中的位置,以 1 为基数 |
search(Object o)
方法用于查询栈中给定元素 o
在该栈中出现的位置。若该元素存在于栈中,则返回该元素在栈中的距离栈顶的位置。栈顶位置为 1,往下递增。
public static void main(String[] args) { // 创建一个堆栈 Stack<String> stack = new Stack<>(); // 将元素压入堆栈 stack.push("Java"); stack.push("Python"); stack.push("C++"); // 查找元素在堆栈中的位置 int index1 = stack.search("Java"); int index2 = stack.search("Python"); int index3 = stack.search("C++"); // 输出元素在堆栈中的位置 System.out.println("Java在堆栈中的位置是:" + index1); System.out.println("Python在堆栈中的位置是:" + index2); System.out.println("C++在堆栈中的位置是:" + index3); }
结果:
关于“Java模拟栈实现及Stack类使用的方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java模拟栈实现及Stack类使用的方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。