如何自定义一个栈

使用堆内存实现栈

Posted by Jeremy Song on 2022-07-16
Estimated Reading Time 1 Minutes
Words 221 In Total
Viewed Times

场景

最近练算法题的时候,有这么一个情况。题目限制了栈内存的大小,但是根据题目要求呢,确实是需要使用栈来完成的,例如 DFS算法

那么这个时候就需要我们自己来实现栈了,具体如下。

算法示例

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
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Set;

public class MyStack {
public static void main(String[] args) {
LinkedList<Integer> stack = new LinkedList<>();
Set<Integer> visited = new HashSet<>();

// 压栈
stack.addLast(9);
stack.addLast(6);
stack.addLast(3);
stack.addLast(7);
stack.addLast(1);

while (!stack.isEmpty()) {
int curr = stack.getLast(); // 类似于peek,获取值但不弹栈

// 添加一段逻辑,模拟递归入栈
if (curr < 20 && !visited.contains(curr)) {
stack.addLast(curr + 10);
visited.add(curr);
continue;
}

// 弹栈
System.out.println(stack.removeLast());
}
}
}

欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !