首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双向链表

双向链表
EN

Stack Overflow用户
提问于 2017-07-10 23:33:52
回答 1查看 65关注 0票数 0

我最近在hackerrank上注册了一个账号,这是我遇到的第十个问题。我花了一个小时才想出解决方案(我用纸和笔试了很多次),最后它通过了。在那之后,我看到了一些提交的答案,我的一些其他folks.Their代码与我的相比非常小,或者你认为我的答案也是可以的。我没有人可以问,所以我来这里...当我看到that.Can时,我觉得自己很傻,我以后会改进它吗??(如果你认为这是一个愚蠢的问题,请原谅我)

代码语言:javascript
复制
    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;


}
EN

回答 1

Stack Overflow用户

发布于 2017-07-10 23:45:22

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

代码语言:javascript
复制
while(currNode != tail){
    currNode.nextNode = tempNode
    currNode.nextNode = currNode.prevNode
    currNode.prevNode = tempNode
    currNode = currNode.prevNode
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45016136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档