我是靠谱客的博主 羞涩咖啡,这篇文章主要介绍Java实现栈的两种方式,现在分享给大家,希望可以做个参考。

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
public class Stack_<T> { private Object[] stack;// 数组实现 private int size; public Stack_() { stack = new Object[20];// 初始长度20 } //压栈 public void push(Object o) { if (size >= stack.length) { stack = Arrays.copyOf(stack,stack.length * 2);// 空间不足则扩容 } stack[size++] = o; } // 返回栈顶元素 public T peek() { if (size > 0) return (T) stack[size - 1]; else return null; } // 弹出并返回栈顶元素 public T pop() { if (size > 0) return (T) stack[--size]; else return null; } // 判断栈是否为空 public boolean isEmpty() { if (size == 0) { return true; } else return false; } // 返回栈长度 public int size() { return this.size; } }

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
public class Stack_plus<T> { // 内部类,即节点 private class stack<T> { T value; stack next; } // 栈顶指针 private stack<T> head; private int size; public Stack_plus() { head = null; } // 压栈 public void push(T t) { if (t == null) { throw new NullPointerException(); } if (head == null) { head = new stack<T>(); head.value = t; head.next = null; } else { stack<T> temp = head; head = new stack<T>(); head.value = t; head.next = temp; } size++; } // 返回栈顶元素 public T peek() { if (head != null) return head.value; else return null; } // 弹出并返回栈顶元素 public T pop() { T temp = peek(); head = head.next; size--; return temp; } // 判断栈是否为空 public boolean isEmpty() { if (head == null) return true; else return false; } // 返回栈长度 public int size() { return size; } }

不足之处望指正。

最后

以上就是羞涩咖啡最近收集整理的关于Java实现栈的两种方式的全部内容,更多相关Java实现栈内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部