加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Stack.java 1.64 KB
一键复制 编辑 原始数据 按行查看 历史
辉少 提交于 2020-11-18 09:54 . 作业
public class Stack {
private Node last;
private int size;
public Stack() {
last = null;
size = 0;
}
public void push(int item) {//往栈中添加元素
Node newNode;
if (size == 0) {
newNode = new Node(null, null, item);
} else {
newNode = new Node(last, null, item);
last.next = newNode;
}
last = newNode;
size++;
}
public int pop() throws Exception {//栈顶元素出栈
if (size == 0) {
throw new Exception("StackEmpty");
} else {
int res = last.item;
if (size == 1) {
last = null;
} else {
last = last.perv;
last.next = null;
}
size--;
return res;
}
}
public int peek() {//查看栈顶元素
return last.item;
}
private Node jump(int position) throws Exception {//通过用户给予的位置信息,移动至指定位置
if (position > 0 && position <= size) {
Node nowNode = last;
int frequency = size - position;
while (frequency != 0) {
nowNode = nowNode.perv;
frequency--;
}
return nowNode;
} else {
throw new Exception("error...");
}
}
private static class Node {
private final Node perv;
private Node next;
private final int item;
public Node(Node perv, Node next, int item) {
this.perv = perv;
this.next = next;
this.item = item;
}
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化