【问题标题】:Possible to traverse the singly linked list from tail to head? (Java)可以从头到尾遍历单链表吗? (爪哇)
【发布时间】:2021-07-25 14:12:45
【问题描述】:

我想知道是否可以仅使用 for 循环从尾到头遍历单个 LinkedList。

例如,我可以用给定的头从头到尾遍历。

 LinkedList temp = head;    
   for (int i = 0; i < size-1; i++) {
      temp = temp.getNext();
}

但是下面的代码可以从头到尾遍历吗?

 LinkedList temp = tail;    
   for (int i = 0; i < size -1; i++) {
      temp = temp.getNext();
}

【问题讨论】:

  • 之所以称为“单链接”,是因为节点之间存在单链接。从一个节点到下一个节点。如果您希望能够向后遍历,则需要一个“双向”列表。
  • Link 看看这个链接
  • 那么,我们只能从头到尾遍历,只能遍历一个方向?

标签: java


【解决方案1】:

嗯,最简单的答案是,如果需要回溯,请使用doubly linked 列表。

但是,如果你真的想用singly linked list 这样做,并且你不想使用任何库,你应该自己实现这个类并添加一个这样的反向方法:

public void reverse () {
    Node pointer = head;
    Node previous = null, current = null;
    while (pointer != null) {
        current = pointer;
        pointer = pointer.next;
        current.next = previous;
        previous = current;
        head = current;
    }
}

通过这种方法可以反转当前单链表,从而可以从原链表的尾部到头部进行遍历。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多