使用调用对象实现DoublyLinkedList类

时间:2016-11-03 16:08:53

标签: java doubly-linked-list

我被要求实现一个ScoreBoard类,它有很多方法:

  
      
  1. void add(GameEntry g):向GameEntry添加新的ScoreBoard对象。应将GameEntry对象插入记分板列表,以使列表中的节点以不增加的分数顺序显示。
  2.   
  3. void removeAll():删除所有游戏条目以清除记分板。
  4.   
  5. void listScores():在记分板中以非递增顺序显示可用游戏分数列表。
  6.   

我附带的内容是创建一个ScoreBoard类,其中包含add(gameEntry),并扩展我的DoublyLinkedList课程,该课程使用DNode <E>以及removeAll() }和listScores()方法。

我的问题:在作业中,我得到的是在同一个班级中实施ScoreBoardDoublyLinkedList,我真的试图在同一个班级中制作它们,这可能吗? 换句话说,我可以从其他类调用一个对象并在我的ADT双向链表类中实现它吗?

  

ScoreBoard课程:

public void add(GameEntry g) {

    if (g == null) {
        return;  }
    if (getHead() == null) {
        setHead(new DNode(g, null, null));
    } else if (g.getScore() > getHead().getElement().getScore()) {
        DNode<E> newHead = new DNode(g, null, getHead());
        getHead().setPrevious(newHead);
        setHead(newHead);
    } else if (getTail() != null && g.getScore() > getTail().getElement().getScore()) {
        DNode newTail = new DNode(g, getTail(), null);
        getTail().setNext(newTail);
        setTail(newTail);
    } else {
        DNode<E> pointer = getHead();
        while (pointer != null) {
            if (g.getScore() > pointer.getElement().getScore() && 
                    g.getScore() < pointer.getNext().getElement().getScore()) {
                pointer.setNext(new DNode(g, pointer, pointer.getNext()));
                pointer.getNext().getNext().setPrevious(pointer.getNext());
                pointer = pointer.getNext();
            }
        }
    }
    setSize(size()+1);
}


}

更新:添加了代码。

  

GameEntry类:

public class GameEntry {

private String name;
private int score;

public GameEntry(String n, int s) {
    name = n;
    score = s;
}

public String getName() {
    return name;
}

public int getScore() {
    return score;
}

@Override
public String toString() {
    return String.format("Name: %s | Score: %d", name, score);
}

 }

1 个答案:

答案 0 :(得分:0)

您可以使用嵌套类创建ScoreBoard,这是一个示例。但这一切都取决于你对整体游戏的设计。

public class ScoreBoard {

    private DoublyLinkedList list = new DoublyLinkedList();

    public ScoreBoard() {

    }

    public class DoublyLinkedList {

        private Node head;
        private Node tail;

        public DoublyLinkedList() {
            head = tail = null;
        }
    }

    private class Node {

        private String val;
        private Node next;
        private Node previous;

        public Node(String val, Node next, Node previous) {
            this.val = val;
            this.next = next;
            this.previous = previous;
        }
    }

}

希望这会有所帮助。如您所见,您可以拥有私有和公共嵌套类。查看java文档:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html