在JAVA中实现链接列表(不使用迭代器反向)

时间:2015-10-31 20:29:33

标签: java

我正在尝试实现linkedList类,添加一个reverse(int n)方法来反转链表。例如,我有一个链表{A - > B - > C - > D - > E)。当我调用reverse(4)时,链表将变为D - > C - > B - > A - > E。

我试图避免使用迭代器,构造新节点并复制数据值。有谁知道怎么做?我知道有一篇关于逆转链表的帖子,但是有一篇文章正在颠倒整个链表。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

由于您未提供LinkedList的实施,我只能提供一般性的想法:
只需将指针交换到上一个节点和下一个节点并更新最后一个节点和第一个节点的字段即可反转完整列表。

void reverse()
    node tmp = first
    first = last
    last = tmp

    while(tmp.next != null)
        node swap = tmp.next
        tmp.next = tmp.previous
        tmp.previous = swap

        tmp = swap

我会留给你添加界限