【问题标题】:How to print LinkedList Node object in reverse order如何以相反的顺序打印 LinkedList 节点对象
【发布时间】:2015-06-25 12:12:43
【问题描述】:

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

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中的元素详细介绍。

【问题讨论】:

  • 你能发布错误吗?如果可能的话,堆栈跟踪 :)
  • 看起来你还有一些问题!一旦打印出来,您可能会弄清楚它们。
  • '线程“主”java.lang.RuntimeException 中的异常:无法编译的源代码 - 错误的符号类型:java.util.ArrayList.add' 是错误。 - 鲁本·罗德里格斯·费尔南德斯
  • 如果解决了,我可以修复其他人。谢谢

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


【解决方案1】:

您将通用 Node 类型用作原始类型:

Node e = head;

应该是

Node<E> e = head;

【讨论】:

  • 如果我使用类型转换,这与您提供的有什么不同吗?
  • 泛型类型的存在正是为了允许类型安全的代码并避免强制转换。
猜你喜欢
  • 2021-08-17
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多