java数据结构—-栈

栈是一种只能在一端进行插入和删除操作的特殊线性表。

其中,允许插入和删除的一端称为栈顶,另一端称为栈底。通常,将栈的插入操作称为入栈,删除操作称为出栈。入栈时元素总是放在栈底,而出栈的总是栈顶元素。因此,栈中元素采用的是“后进先出”的方式。

栈的数据元素类型可以任意,只要是同一种类型即可。它的基本操作包括清空、判空、求元素个数、获取栈顶、入栈和出栈等。
代码如下:

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.util.Arrays;


public class Mystack {
int [] elements;
public Mystack(){
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){
throw new RuntimeException("stack is empty");
}
//取出最后一个元素
int element=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 element;
}
//输出
public void show(){
System.out.println(Arrays.toString(elements));
}
//取出栈顶元素
public int peek(){
if(elements.length==0){
throw new RuntimeException("stack is empty");
}
return elements[elements.length-1];
}
//判断栈是否为空
public boolean isEmpty(){
return elements.length==0;
}
public static void main(String[] args) {
Mystack mystack=new Mystack();
for(int i=0;i<5;i++){
mystack.push(i*6);
}
mystack.show();
System.out.println(mystack.pop());
System.out.println(mystack.pop());
mystack.show();
System.out.println(mystack.peek());
System.out.println(mystack.isEmpty());


}

}
-------------本文结束感谢您的阅读-------------
0%