我很难开始我的实验室,因为我不知道指令告诉我要做什么。
说明:
public class MyStack<AnyType> implements Stack<AnyType>
{
public boolean isEmpty()
{
return false;
}
public void push(AnyType x)
{
}
public AnyType pop()
{
return null;
}
public AnyType peek()
{
return null;
}
}
所以,基本上我到目前为止唯一做的就是创建另一个类,它只包含一个为这个类设置方法的接口。如果我需要将该java文件移动到这个类,我确实有教师分配的“实验2”,你可以这么说。另外,我究竟如何实例化这个类? (我对Java的理解程度相当低,所以如果你能ELI5那就太棒了。)
答案 0 :(得分:0)
有些事情如下:
interface IStack<T> {
void push(T x);
T pop();
}
class SinglyLinkedList<T> {
private class Node {
T data;
Node next;
public Node(T data) {
this.data = data;
}
}
private Node first;
private int size;
public void addFront(T x) {
Node newNode = new Node(x);
newNode.next = first;
first = newNode;
size++;
}
public void removeFront() {
if (first == null) return;
first = first.next;
size--;
}
public T getFront() {
if (first == null) return null;
return first.data;
}
public int size() {
return size;
}
}
class Stack<T> implements IStack<T> {
private SinglyLinkedList<T> referenceToTheSinglyLinkedListYouMadeInLab2;
public Stack() {
referenceToTheSinglyLinkedListYouMadeInLab2 = new SinglyLinkedList<>();
}
@Override
public void push(T x) {
referenceToTheSinglyLinkedListYouMadeInLab2.addFront(x);
}
@Override
public T pop() {
T result = referenceToTheSinglyLinkedListYouMadeInLab2.getFront();
referenceToTheSinglyLinkedListYouMadeInLab2.removeFront();
return result;
}
public int size() {
return referenceToTheSinglyLinkedListYouMadeInLab2.size();
}
public static void testClient() {
Stack<String> st = new Stack<>();
st.push("one");
st.push("two");
System.out.println("Size: " + st.size());
System.out.println(st.pop());
System.out.println("Size: " + st.size());
System.out.println(st.pop());
System.out.println("Size: " + st.size());
}
}
public class Program {
public static void main(String[] args) {
Stack.testClient();
}
}
如果你想要,你可以在堆栈中没有元素时抛出异常,但它已经是你的设计选择了。