双重链表

时间:2017-07-10 15:33:52

标签: java data-structures

我一直试图弄清楚如何扭转双重关联的顺序  我最近在hackerrank上创建了一个帐户,这是我的第10个问题。  我花了1个小时才弄清楚解决方案(我用笔和纸试过  很多次)最后它传递正确。  在那之后,我看到了一些其他人提交的答案。他们的代码是  与我相比,它的长度非常小,或者您认为我的答案也没问题。  我没有人要求所以我来到这里......  当我看到它时,我感到愚蠢。我可以在将来改进吗?  (请原谅我,如果你认为这是一个愚蠢的话  问题)

    Node Reverse(Node head) {
     Node prevNode = null;
     Node NextNode = null;
     Node m = head;
     Node upComingNode = null;
     Node temp = head;
     if(head == null){
      return head;
  }
    else{
        while(temp!=null){
            NextNode = temp.next;
            temp.next = prevNode;
            m.prev = upComingNode;
            prevNode = temp;
            upComingNode = prevNode.next;
            m = temp;
            temp = NextNode;  
        }
       head = prevNode;
    }
    return head;


}

1 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪种语言,但要反转双向链接列表,简而言之,您希望为每个节点交换下一个和上一个节点。这可以很快完成,伪代码如下:

while(currNode != tail){
    currNode.nextNode = tempNode
    currNode.nextNode = currNode.prevNode
    currNode.prevNode = tempNode
    currNode = currNode.prevNode
}

请注意,我们将下一个节点设置为以上一个节点进行迭代,因为前一个节点实际上指向我们进行切换的下一个节点。