如何为扩展 Comparable 的链接堆栈类编写 getMin() 方法? (家庭作业)
对于此作业,我需要创建一个包含 getMin()
和 getMax()
的链接堆栈类。我无法更改讲师提供的类标题。 getMin
和 getMax
时间都应该是 O(1)。
我的想法是,我需要使用 compareTo
方法在推送或弹出条目时比较条目,以便我可以设置变量 minValue
和 maxValue
等于它们各自的值。但是,我不明白类头
我也不知道如何或在哪里实现 Comparable。我尝试让我的 class Node
实现 Comparable
但它要求我重写 compareTo
方法,我不确定这会如何工作。
任何帮助将不胜感激!以下是我针对此作业的代码:
public class MinMaxStack <T extends Comparable<? super T>> implements StackADT<T> {
private Node<T> top;
private int size;
public MinMaxStack() {
clear();
}
private class Node<E>{
E data;
Node<E> previous;
}
public T getMin() {
if(isEmpty()) {
throw new EmptyCollectionException("The stack is empty but is trying to getMin.");
} else {
return null;
}
}
public T getMax() {
return null;
}
@Override
public T pop() {
if(isEmpty()) {
throw new EmptyStackException("Stack is empty but trying to pop.");
}else {
T dataToReturn = top.data;
top = top.previous;
size -= 1;
return dataToReturn;
}
}
@Override
public T peek() {
if(isEmpty()) {
throw new EmptyStackException("Stack is empty but trying to peek");
}else {
return top.data;
}
}
@Override
public void push(T newItem) {
Node<T> newNode = new Node<>();
newNode.data = newItem;
if(!isEmpty()) {
newNode.previous = top;
}
top = newNode;
size += 1;
}
@Override
public int getSize() {
return size;
}
@Override
public void clear() {
while(!isEmpty()) {
top = null;
size = 0;
}
}
@Override
public boolean isEmpty() {
return size == 0;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论