2016-06-30 8 views
-1

指定した要素をソート済みリストの正しい位置に挿入するメソッドを作成していますが、同じ要素を何回か挿入することができます。私のメソッドは要素を挿入せず、なぜそれが正しい位置にすべての要素を挿入しないのか分かりません!これは私のコードですソート済みノードに挿入する

+1

コードを字下げして正しい形式で貼り付けてください。 –

答えて

0

currentがnullの場合にのみ新しい項目を挿入したようです。しかし、見た目に近い上記のループでは、ループは終了し、currentできるがnullでない場合(最初の場合)

first ifがtrueの場合、あなたがしている場合はその項目がlinked list

0
else{ //insert into sorted list 
     Node d=new Node(element); 
     Node current = head; 
     Node pre=null; 
     while(current!=null){ 
      if(c.compare(current.item, element)>0){ 
       break; 
      } 
      else{ 
       pre=current; 
       current=current.next; 
      } 
     } 
     if(current == null && pre!=null){ //insert new tail 
      pre.next=d; 
      tail=d; 
      d.pre=pre; 
      size++; 
      return this; 
     } 
     else { //insert when compare is successful and node not at tail. 
      d.pre = pre; 
      pre.next = d; 
      current.pre = d; 
      d.next = current; 
      return this; 
     } 
    } 
+0

私は返答文を入れるために私の答えを編集しましたが、 –

0

に取得していません複数の要素を持つことができるソートされたリストを作成する方法をお探しの場合は、クラスを作成してクラスを作成し、必要な操作を実装することをお勧めしたいと思います。最初にリストをソートする場合は、Collections.sort()を参照してください。その後、リストを挿入または削除するたびに、バイナリ検索を実行して正しい場所を見つけることができます。

もう一つのアイデアは、あなただけではなく、SortedSet<Multiplicity<E>>、代わり代わりに、あなたはインクリメントまたはカウンタをデクリメント、すでにそこまたは削除一つだ要素を挿入するのに使用でき、そのクラス

public class Multiplicity<E> { 
    private E value; 
    private int numberOfDuplicates; 
    // etc. etc. 

を作成することです。

関連する問題