2015-09-30 2 views
-4

Мне тяжело начинать свою лабораторию, потому что я понятия не имею, что мне говорит инструкция.Понимание инструкций

Инструкция:

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; 
} 
} 

Так, в принципе единственное, что я сделал до сих пор было создать еще один класс, содержащий интерфейс, который устанавливает методы для этого класса. У меня есть «Лаборатория 2», которую назначили инструкторы, если мне нужно переместить этот Java-файл в этот класс, вы можете просто сказать это. Кроме того, как именно я создаю экземпляр этого класса. (Мой уровень понимания Java довольно низкий, так что если бы вы могли ELI5, это было бы здорово).

+0

На первом шаге предлагается сделать свой SingleLinkedList [member] (https://docs.oracle.com/javase/tutorial/java/javaOO/variables.html) из 'MyStack', используя специальную реализацию [constructor ] (https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html), который может создать экземпляр списка. Для второй части см. [This] (http://stackoverflow.com/questions/294234/inserting-a-node-into-a-linked-list-in-constant-time). –

ответ

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

Если вы хотите, вы можете сделать это бросить исключение, когда нет никаких элементов в стеке, но это уже ваш выбор дизайна.

Смежные вопросы