【问题标题】:How to print elements in reverse from a linked list in java?如何从java中的链表反向打印元素?
【发布时间】:2019-11-19 15:08:22
【问题描述】:
// my print in normal order

public void printList()
    {   
        ListElem curr = head;

        while(curr != null)
        {
            System.out.print(curr.getData() + "->");
            curr = curr.getNext();
        }
    }

// my attempt to print in reverse order

public void printListRev()
    {   
        ListElem curr = head;

        if(curr == null) return;

        printListRev();

        System.out.print(curr.getData() + " ");
    }

由于此方法不接受任何参数,因此我不确定如何递归执行此操作。我试图弄清楚如何打印出单链表中的元素(字符串)。

【问题讨论】:

  • 你不能给printListRev添加一个参数吗?
  • 是的,但我正在尝试不添加任何内容
  • 如果你不能添加参数,只需创建一个私有帮助方法
  • 有没有不添加私有辅助方法的方法?
  • 使用递归需要传递一个参数。

标签: java


【解决方案1】:

用单链表做起来并不容易,如果它是一个双向链表并且你可以设法得到最后一个元素(尾元素),那么按照相反的顺序跟进会更容易,但是当你说它是一个单链表我建议你将所有元素以相反的顺序加载到函数中的一个数组中并直接打印,这是一种解决方法,否则它是不可能的......这是我的见解

【讨论】:

    【解决方案2】:

    只需遍历您的列表并通过添加每个项目的数据来构建一个字符串:

    public void printListRev()
        {   
            ListElem curr = head;
            String result = "";
            while(curr != null)
            {
                result = curr.getData() + "->" + result;
                curr = curr.getNext();
            }
            System.out.print(result);
        }
    

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      相关资源
      最近更新 更多