2015-04-18 68 views
0

在下面的方法reverse()中,我想訪問Node的元素並將它們添加到ArrayList中。之後,使用循環,它將按相反順序打印。如何以相反的順序打印LinkedList節點對象

public void reverse(){ 

      Node e = head; 
      ArrayList<E> s = new ArrayList<E>(); 
      while(e!=null){ 

       s.add(e.element); 
       e= e.next; 
      } 
      for (int i = count-1; i >= 0; i--) { 
       System.out.print (""+s.get(i)); 
      } 
      System.out.println(""); 

    } 

但是,s.add(e.element) ;提供了一個錯誤。 這裏是Node類,

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

    public Node(E element){ 
     this.element=element; 
     next =null; 
    } 
} 

和LinkedList類

 public class LinkedListStack<E> implements Stack<E>{ 
      Node<E> head; 
      Node<E> tail; 
      int count=-1; 

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

    public void push(E element) { 
      Node<E> newNode = new Node<>(element); 
      if(count==-1){ 
       head=tail=newNode; 
       count++; 
      } 
      else{ 
       newNode.next=head; 
       head = newNode; 
      } 
      count++; 
     } 
      public void reverse(){ 

       Node e = head; 
       ArrayList<E> s = new ArrayList<E>(); 
       while(e!=null){ 

        s.add(e.element); 
        e= e.next; 
       } 
       for (int i = count-1; i > 1; i--) { 
        System.out.print (""+s.get(i)); 
       } 
       System.out.println(""); 

      } 
} 

如果有人解釋的錯誤在細節ArrayList中添加對象

元素我會很高興。

+1

你可以張貼錯誤? Stacktrace如果可能的話:) –

+0

看起來你還有更多的問題!打印完成後,您可能會將其解決。 –

+0

'線程中的異常'main'java.lang.RuntimeException:不可編譯的源代碼 - 錯誤的sym類型:java.util.ArrayList.add'是錯誤。 - ruben rodriguez fernandez –

回答

2

您使用的是通用的節點類型爲原始類型:

Node e = head; 

應該

Node<E> e = head; 
+0

感謝您的回答。它解決了問題。 –

+0

如果我使用類型轉換,它是否與您所提供的不同? –

+0

通用類型的存在正是爲了允許類型安全的代碼並避免強制轉換。 –

相關問題