腾讯云授权服务中心
五万用户的选择,您身边的云计算顾问
发布日:2022-01-18 13:01 阅读数:
import java.util.Arrays; public class MyStack<T> { private T[] data; private int length = 2; private int maxIndex; public MyStack() { data = (T[]) new Object[length]; maxIndex = -1; } public void push(T element) { if (isFull()) { length = 2 * length; data = Arrays.copyOf(data, length); } data[maxIndex + 1] = element; maxIndex++; } public T pop() { if (isEmpty()) { throw new IndexOutOfBoundsException("栈内没有数据"); } else { T[] newdata = (T[]) new Object[data.length - 1]; for (int i = 0; i < data.length - 1; i++) { newdata[i] = data[i]; } T element = data[maxIndex]; maxIndex--; data = newdata; return element; } } private boolean isFull() { return data.length - 1 == maxIndex; } public boolean isEmpty() { return maxIndex == -1; } public void display() { for (int i = 0; i < data.length; i++) { System.out.print(data[i]+" "); } System.out.println(""); } }
测试代码:
public class MyStackTest { public static void main(String[] args) { MyStack<Integer> myStack = new MyStack<>(); myStack.push(1); myStack.push(2); myStack.push(3); myStack.push(4); myStack.display(); System.out.println(myStack.pop()); myStack.display(); } }
输出结果如下,符合预期:
1 2 3 4 4 1 2 3
栈的特点就是先进先出,但是如果需要随机取出前面的数据,效率会比较低,需要倒腾出来,但是如果底层使用数组,理论上是可以通过索引下标取出的,Java里面正是这样实现。
编辑:航网科技 来源:腾讯云
本文版权归原作者所有 转载请注明出处
Copyright © 2011-2020 www.hangw.com. All Rights Reserved 深圳航网科技有限公司 版权所有 增值电信业务经营许可证:粤B2-20201122 - 粤ICP备14085080号
微信扫一扫咨询客服
全国免费服务热线
0755-36300002