2016-05-18 24 views
-1

Circularリンクされたリストが与えられていると、Javaでノードを削除するためのメソッドを記述します。Javaの循環リンクリストからノードを削除する方法は?

+0

はStackOverflowのへようこそ!私たちはあなたのためのコードを書いていません!私たちはあなたを助けたいと思っていますが、もし努力しないと、私たちはどちらもしません。 – SZenC

+0

私が探していたものが見つからなかったので、私は質問と回答のことをしていました。どうやら私はそれを正しくしなかった。 –

答えて

-1

本当にこれを考慮する4つのケースがあります。

ケース1:

空のリストですか?そう

ケース2 nullを返すか返された場合:

を、リスト内の唯一の要素があります。 ポインタをnullに設定し、リストをnullに設定します。

ケース3:

は、リストの前で何かを削除します。 この場合、いくつかの手順があります。

ステップ:

  1. リストへの一時的なポインタを作成します。
  2. リストの最後に移動します。
  3. 一時ポインタをリストの先頭に設定します。
  4. リストの先頭を前方に移動します。
  5. テンポラリのポインタをnullに設定します。
  6. リストの最後を、リストの新しいフロントを指すように設定します。

ケース4:

我々は中央項目を削除するこの形式1-> 2-> 3->で何かを削除します。 。それは、リストへの一時ポインタを作成します。1.

ステップ

  1. に周りにループバックするので、これは、同様に最後の項目を削除するために働きます。
  2. 削除するデータが見つかるまで、一時ポインタを前方に移動します。
  3. 削除ノード(例ノード削除)を作成し、それをtempのポインタに設定します。
  4. 削除するノード上でスキップするようにtempを設定します。
  5. 削除ノードのポインタをnullに設定します。

    public void delete(int data) { 
        // Null list case 
        if(list == null) return; 
    
        // Delete the only element case 
        if(list.data == data && list.next.data == list.data) { 
         list.next = null; 
         list = null; 
         return; 
        } 
    
        // Delete the front of the list case 
        if(list.data == data) { 
    
         // Move to the end of the list 
         Node end = list; 
         while(end.next.data != list.data) { 
          end = end.next; 
         } 
    
         Node temp = list; 
         list = list.next; 
         temp.next = null; 
         end.next = list; 
         return; 
        } 
    
        // Delete something in the middle 
        Node temp = list; 
        while(temp.next.data != data && temp.next.data != list.data) { 
         temp = temp.next; 
        } 
    
        // We circled the list and did not find the element to delete  
        if(temp.next.data == list.data) return; 
    
        Node del = temp.next; 
        temp.next = temp.next.next; 
        del.next = null; 
    } 
    
+0

OPは 'Node'を削除するメソッドを要求しましたが、このメソッドでは、内容が' int'にマッチするNodeを削除するメソッドを提供しています。これは、循環リンクリスト内に固有の要素のみが存在することも前提としています。 –

+0

それはOPだった、私は彼がちょうどそれの地獄のための彼のコードを投稿したと思う – sbowde4

+0

これは過度に複雑に思えます。私は周りを回っていますか?それ以外はノードを削除するだけです。いいえ? – ChiefTwoPencils

関連する問題