如何以相反的顺序打印链接列表节点对象

时间:2015-04-18 16:00:37

标签: java arraylist linked-list nodes generic-programming

在以下方法reverse()中,我想访问Node的元素并将其添加到ArrayList中。之后,使用循环,它将以相反的顺序打印。 / p>

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 个答案:

答案 0 :(得分:2)

您使用通用节点类型作为原始类型:

Node e = head;

应该是

Node<E> e = head;