2017-07-10 20 views
0

私は二重リンク リストの順序を逆にする方法を見つけようとしています。最近、ハッカーブランクに関するアカウントを作成しましたが、これが私の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; 


} 
+0

あなたは正しいアイデアを得ているようです...コードはちょっと乱雑ですが。あなたはちょうどここできちんと答えを確認することもできます:http://www.geeksforgeeks.org/reverse-a-doubly-linked-list/ – JensV

+0

あなたが使用しているプログラミング言語のタグを追加してください。 – Yonlif

+0

このコードはjavaで書かれています – amitP

答えて

0

私はあなたが作業しているどのような言語かわからないけど、二重にリンクされたリストを逆にあなたは、簡単に、あなたがあなたの次を交換したいです各ノードのprevノードこれはかなりすぐに行うことができ、擬似コードは以下の通りです:前のノードが実際に今、次のノードにその私たちを指しているので、私たちは、以前ノードとしての反復する次のノードを設定し

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

注意スイッチを作った。

関連する問題