理解说明

时间:2015-09-30 17:03:26

标签: java

我很难开始我的实验室,因为我不知道指令告诉我要做什么。

说明:

enter image description here 这是我到目前为止所做的:

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那就太棒了。)

1 个答案:

答案 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();
    }
}

如果你想要,你可以在堆栈中没有元素时抛出异常,但它已经是你的设计选择了。