2014-03-30 24 views
0

我正在構建一些測試只是爲了讓我熟悉鏈表。LinkedList ToString輸出

我想打印出的LinkedList對象但我沒有得到任何結果。很可能我正在做一些我不知道的基本錯誤。

Node.java

public class Node<E> { 
    E data; 
    Node<E> next; 

    //Constructor One 
    /** Creates a new node with a null next field. 
    * @param dataItem The data stored. 
    */ 
    Node(E dataItem){ 
     data = dataItem; 
     next = null; 
    } 

    //Constructor Two 
    /** Creates a new node that references another node. 
    * @param dataItem //the data stored 
    * @nodeRef nodRef //The node referenced by new node. 
    */ 
    Node(E dataItem, Node<E> nodeRef){ 
     data = dataItem; 
     next = nodeRef; 

    } 
} 

SlinkedList.java

/** Class to represent a linked list with a link from each node to the next node 
* 
* @author Study 
* 
* @param <E> 
*/ 
public class SlinkedList<E> { 


    // Reference to head Node 
    private Node<E> head = null; 

    //The number of Items in list 
    private int size; 

    /** Add an Item to the front of a list. 
    * @param item the item to be added*/ 
    public void addFirst(E item){ 
     head = new Node<E>(item, head); 
     size++; 
    } 

    /** Add a node after a given node 
    * 
    * @param node //The node preceding the new item. 
    * @param item //The item to insert. 
    */ 
    public void addAfter(Node<E> node, E item){ 
     node.next = new Node<E>(item, node.next); 
     size++; 
    } 

    /** Remove the node after a given node 
    * @param node, the node before the one to be removed 
    * @returns the data from the removed node or null if there is no node to remove. 
    */ 
    //This will work for all nodes except the first one. 
    public E removeAfter(Node<E> node){ 
     Node<E> temp = node.next; 
     if(temp != null){ 
      //Nodes next(node before node to remove) equals temps next(the node after node to remove) 
      node.next = temp.next; 
      size--; 
      return temp.data; 
     }else{ 
      return null; 
     } 
    } 

    @Override 
    public String toString(){ 
     Node<E> nodeRef = head; 
     StringBuilder result = new StringBuilder(); 
     while(nodeRef != null){ 
      result.append(nodeRef.data); 
      if(nodeRef.next != null){ 
       result.append("==>"); 
      } 
      nodeRef = nodeRef.next; // Advance down the list. 
     } 
     return result.toString(); 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     SlinkedList<String> test = new SlinkedList<String>(); 
     Node<String> tom = new Node<String>("Tom"); 
     test.addFirst("AddFirstOne"); 
     test.addFirst("AddFirstTwo"); 
     test.toString(); 
    } 
} 

我從toString()方法期待一個打印出來湯姆,AddFirstOne,AddFirstTwo的。

一旦運行我只是得到一個空的控制檯輸出。我再次對LinkedLists是新手,我已經做了我能正確想到的所有事情來獲得輸出。任何幫助表示讚賞。

+0

我沒有看到你添加的第一個節點到你的鏈接列表。 – Mauren

+0

你能詳細說明一下嗎?我在主要使用添加第一種方法來做這樣的...我想。 – user2998504

+0

請參閱下面的答案。 – Mauren

回答

1

而不是打印清單,你只是調用它返回一個String的方法。更改

test.toString(); // Doesn't print, just returns a String 

System.out.println(test); // toString() of test is automatically called 
+0

我就是這樣一個derp:D – user2998504

+0

發生在我們大家身上。 – csmckelvey

相關問題