2017-11-02 16 views
1

単リンクリストの先頭を取り出してリストの最後に移動するコードを作成しようとするのは本当に苦労しています。私はとても混乱しているので私はここに来たので、ちょうど欲求不満になり始めている。誰かが私を助けて、どこから始めるべきかを説明できるなら、私はそれを高く評価します。これは私が持っていたものですが、それは無限ループであり、正しいことではないかもしれませんが、おそらくそれはスタートかもしれません。どのような入力をありがとう。ヘッドノードをリストの最後に移動

public void flip(Node head, Node tail){ 
    Node temp = head; 
    head = temp.next; 
    head.next = null; 
    tail.next = head 
} 
+0

プレイコンピュータ鉛筆と紙で。あなたは最後のヌードを見つけて、古い頭部への次回の参照を変更する必要があります。それは何を伴うでしょうか?既にテールを持っている場合は、まっすぐなようですが、ヘッドを更新して前の2番目のノードにする必要があります。 –

答えて

0

すでに入力としてheadtailを持っている場合は、あなたのように処理することができます:次の

head = head.next; 
  • その電流にポイントに移動 'ヘッド' は確認してください

    1. 現在のヘッドの次はnullに初期化されます。

      tail.next = temp 
      

    何かこのように、このヘッドのノードへ

    temp.next = null; // where temp is a new Node with head's data 
    
  • ポイント 'tail.nextを'(ので、それは今最後の要素になります):

    public void flip(Node head, Node tail){ 
        Node temp = new Node(); 
        temp.data = head.data; 
        temp.next = null; // (2) 
        tail.next = temp; // (3) 
        head = head.next; // (1) 
    } 
    
  • +1

    質問の中で自分のコードを更新しました。あなたがそれを見たら本当に感謝しています。だから、例えばA→B→C→DのリンクリストをB→C→D→Aに変更すると、 –

    +0

    @ D.Hoffman Yaはその例のみを検討するよう提案しました。 – nullpointer

    +0

    質問にあるものがあれば、それとの違いは何か、あなたの答えには何を編集したのですか? –

    関連する問題