2014-11-05 5 views
0

Я сделал этот код для добавления элементов в LinkedList. Теперь я хочу вставить элементы в список в отсортированном порядке. Как я могу это сделать?Метод добавления должен вставлять элементы в список в отсортированном порядке

  public void add(String element) 
        { 

         if (isEmpty()) 
         { 
          first = new Node(element); 
          last = first; 
         } 
         else 
         { 
          // Add to end of existing list 
          last.next = new Node(element); 
          last = last.next; 
         }   
        } 

Мой Главный класс это для LinkedList и ArrayList, который вызывает метод SimpleLinkedList класса и SimpleArrayListClass

  package Comp10152_linkedlist; 


      import java.util.Random; 

      public class Comp10152_Lab4 
      { 
       public static void main(String[] args) 
       { 
       final int NUMBER_OF_ITERATIONS = 10; 
       String names[] = {"Amy", "Bob", "Al", "Beth", "Carol", "Zed", "Aaron"}; 
       SimpleLinkedList ll = new SimpleLinkedList(); 
       final int TOTALOPERATIONS = names.length * NUMBER_OF_ITERATIONS; 

       Random random = new Random(); 

       for (int i=0; i<NUMBER_OF_ITERATIONS;i++) 
       { 
        for (int j=0; j<names.length; j++) 
        ll.add(names[j]); 
       } 
       System.out.println("The members of list are:"); 
        System.out.println(ll); 
       // remove half of the items in the list by selecting randomly from names 
       for (int i=0; i<TOTALOPERATIONS/2;i++) 
       { 
        ll.remove(names[random.nextInt(names.length)]); 
       } 
       System.out.println("The members of list are:"); 
        System.out.println(ll); 
       SimpleArrayList al = new SimpleArrayList(); 
       try 
       { 
       for (int i=0; i<NUMBER_OF_ITERATIONS;i++) 
       { 
        for (int j=0;j<names.length;j++) 
        al.add(i,names[j]); 
       } 
        System.out.println("The members of array are:"); 
        System.out.println(al); 

       // remove half of the items in the list by selecting randomly from names 
       for (int i=0; i<TOTALOPERATIONS/2;i++) 
       { 
        al.remove(names[random.nextInt(names.length)]); 
       } 
       System.out.println("The members of array are:"); 
        System.out.println(al); 
       } 
       catch (Exception e) 
       { 
        System.out.println(e); 
       } 
       }  
      } 

ответ

0

Сначала вставьте элементы вне списка, а затем вставить в список, вызвав добавить метод. Как вы сортируете элементы за пределами списка, зависит от того, какие структуры данных вы используете, каков тип данных и какие алгоритмы вы хотите применить.

0

Внесение в список по себе добавить в отсортированный список. Сначала найдите элемент в отсортированном списке, который больше, чем элемент, а затем элемент, который нужно вставить, а затем добавьте новый элемент до этого.

Что-то вроде ..

//Considering ascending order 
public void add(String element) { 
    if(isEmpty) { 
     first = new Node(element); 
     last = first; 
    } else { 
     currentNode = first; 
     while(currentNode.next != null && currentNode.next.element > element) { 
      currentNode = currentNode.next; 
     } 

     Node newNode = new Node(element); 
     newNode.next = currentNode.next; 
     currentNode.next = newNode; 
    } 
} 
+0

Исключение в потоке "главный" java.lang.NullPointerException \t в Comp10152_linkedlist.SimpleLinkedList.add (SimpleLinkedList.java:108) \t в Comp10152_linkedlist.Comp10152_Lab4.main (Comp10152_Lab4 .java: 30) –

+0

и currentNode ????? –

+0

И «currentNode.next.element» в этом элементе, который вы использовали? –

Смежные вопросы