链接列表节点-无法显示我的纸牌游戏输出

时间:2019-02-18 19:42:52

标签: java

正在通过Push pop和peek了解类中的链接列表节点。该计划的前提是向玩家展示他们拥有的牌以及谁赢了。该程序具有不同的对象,分别用于获胜的套牌和每个玩家的手。

以下是另一个循环,以显示获胜者:

for(int i= 0; i<26; i++)
    if(p1cards.peek() > p2cards.peek()) {
        p1cardsWon.push(p1cards.peek());
        System.out.println("Player 1 won: " + p1cardsWon);
        p1cards.pop();
    } else if (p2cards.peek() > p1cards.peek()) {
        p2cardsWon.push(p2cards.peek());
        System.out.println("Player 2 won: " + p2cardsWon);
        p2cards.pop();
    }

这是我的Push,Pop和Peek方法:

public void push(T item) {
    if (head == null) {
        // The stack is empty
        Node newNode = new Node(item, null);
        head = newNode;
    } else {
        // Stack is not empty, create a new node at the top of the stack
        // The new item's next link goes to the "old" head
        Node newNode = new Node(item, head);
        // Now we can re-assign the link to the new head
        head = newNode;
    }
}

public T pop() {

    T top = peek();
    if (head!= null)
        head = head.getNext();

    return top;
}

public T peek() {
    T top = null;

    if (!isEmpty())
        top=head.getData();

    return top;
}

最后是我的toString方法:

public String toString() {
    String retStr = "Contents:\n";
    Node current = head;
    while(current != null) {
        retStr += current.getData() + "\n";
        current = current.getNext();
    }
    return retStr;
}

我得到looks like this的输出

我一直试图弄清楚这是我的方法之一还是For Else循环。先感谢您。

还有here are my classes用于打牌游戏和方法

1 个答案:

答案 0 :(得分:0)

看起来您有点混合了多种方法来做同一件事。您有Node个对象,这些对象跟踪数据以及一个next。但是,您还为stack方法使用了peek()数组,但是没有任何东西可以为stack添加任何东西。

您是否打算删除数组行为以使用链表,而忘记更新peek()方法?