2016-01-28 1 views
0

Моя программа не сортирует список, и я не могу решить проблему. Перед тем как сортировать и сортировать, список будет таким же.Выбор сортировки в связанном списке java

public void SelectionSort(){ 
    for (Node index = head; ((index != null)&&(index.getnext()!=null)); index = index.getnext()) { 
      Node min = index; 
      for (Node test = min.getnext(); test != null; test = test.getnext()) { 
      if (test.getAcc().compareTo(min.getAcc()) < 0){ 
       min = test; 
      } 
      } 
      if(index!=min){ 
       Node temp = new Node(); 
       temp=index; 
       index=min; 
       min =temp; 
      } 
    } 
} 

Ниже мой класс Node:

public class Node { 
    private int ID; 
    private String Acc; 
    private String Symbol; 
    private String Function; 
    private String UniGene; 
    private String Chromosome; 
    private Node next; 

    public Node(){ 

    } 
    public Node(int id, String acc,String unigene, String symbol, String chromosome, String function){ 
     ID=id; 
     Acc=acc; 
     Symbol=symbol; 
     UniGene = unigene; 
     Chromosome = chromosome; 
     Function=function; 
    } 
    public void displayNode() // display 
    { 
     System.out.print("{"+ID+","+Acc+","+Symbol+","+Function+"} \n"); 
    } 
    int getID(){ 
     return ID; 
    } 
    String getAcc(){ 
     return Acc; 
    } 
    String getUniGene(){ 
     return UniGene; 
    } 
    String getSymbol(){ 
     return Symbol; 
    } 
    String getChromosome(){ 
     return Chromosome; 
    } 
    String getFunction(){ 
     return Function; 
    } 
    void setnext(Node newnode) 
    { 
     next = newnode; 
    } 
    Node getnext() 
    { 
     return next; 
    } 
} 
+1

Вы пытались выполнить свой код с помощью отладчика? – Atri

+4

Добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы посетить [помощь] и прочитать [ask]. Это считается не по теме, чтобы опубликовать свой код и попросить других отладить его для вас. Вы должны предпринять некоторые усилия, например, отслеживать код в отладчике, чтобы определить тот шаг, который вы не понимаете, затем задайте конкретный вопрос. В 99% случаев вы найдете проблему самостоятельно. –

+0

Я попробовал отладчик, все еще не могу понять! –

ответ

0

Я думаю, что проблема в том, что вам нужно позаботиться о next указателя при перемещении узлов. В исходном коде вы просто поменять местами 2 ссылки, но не изменить порядок в списке:

  Node next = min.getnext(); 
      min.setnext(index); 
      index.setnext(next); 

Это не будет работать напрямую, но проблема лежит. Вам нужно сохранить «предыдущий» узел и установить previous.setnext (index) или что-то в этом роде.

КСТАТИ:

Node temp = new Node(); 
temp=index; 

создается новый узел, но не использовать его, потому что в следующей строке вы назначаете индекс температуры.

Node temp = index; 
+0

спасибо. то, что я сделал, это просто изменение значений вместо всего узла ... так что следующий указатель остается неизменным, только значения изменяются. И это работает :) –

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

  • Нет связанных вопросов^_^