栈(先进后出)

栈相当于手枪弹夹(不停地往下压子弹)


具体实现

具体方法

1. 压入元素(新数组在旧数组基础上加上压入的元素之后替换旧数组)
2. 取出栈顶(取出并返回栈顶 然后新数组将其他元素放入后替换旧数组)
3. 查看栈顶(只需要返回数组最后一个)
4. 判空(返回数组长度是否为空)

底层方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class Main {
//底层用数组来存储数据
int[] elements;

public Main(){
elements=new int[0];
}

//压入元素(新数组在旧数组基础上加上压入的元素之后替换旧数组)
public void push(int element){
//创建一个新的数组
int[] newArr =new int[elements.length+1];
//原始数组中的元素赋值到新的数组
for(int i=0;i<elements.length;i++){
newArr[i]=elements[i];
}
//将添加的元素加入到新数据
newArr[elements.length]=element; //放到最后!!!
//新数组替换旧数组
elements=newArr;
}

//取出栈顶元素(取出并返回栈顶 然后新数组将其他元素放入后替换旧数组)
public int pop(){
if(elements.length==0){
System.out.println("有异常");
}
//取出数组最后一个数(栈顶)
int top= elements[elements.length-1];
//新建数组存放其他数据
int[] newArr=new int[elements.length-1];
//旧数组除了最后一个存到新的数组
for(int i=0;i<elements.length-1;i++){
newArr[i]=elements[i];
}
//替换数组
elements=newArr;

return top; //返回栈顶
}

//查看栈顶元素(只需要返回数组最后一个)
public int look(){
return elements[elements.length-1]; //只是查看栈顶
}

//判断栈是否为空(只需要返回是不是为空)
public boolean isEmpty(){
return elements.length==0;
}

}

测试Test类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Test {
public static void main(String[] args){
//创建一个栈
Main m=new Main();
//压入数组
m.push(9);
m.push(8);
m.push(7); // 从上到下: 7 8 9
//取数
System.out.println(m.pop()); // 7 因为目前最后压进去的是7
System.out.println(m.pop()); // 8 7已经弹出去了
System.out.println(m.look()); // 9 7.8都弹出去了
}
}

最终执行测试:


×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 栈(先进后出)
  2. 2. 具体实现
    1. 2.1. 底层方法
    2. 2.2. 测试Test类
,