選択ソートを使用してリンクリストをソートする必要があります。 しかし、私はコレクションを使用することはできません。 私は、最小の要素を見つけてソートされたリストの新しいバージョンを作成することに問題があります。おかげさまで そのため、非稼働findSmallest
法Sort
方法正常に動作しないの選択ソート二重リンクリストjava
public class LinkedList {
public Node first;
public Node last;
public LinkedList() {
first = null;
last = null;
}
public boolean isEmpty() {
return first == null;
}
public void addFirst(Student student) {
Node newNode = new Node(student);
if (isEmpty())
last = newNode;
else
first.previous = newNode;
newNode.next = first;
first = newNode;
}
public void addLast(Student student) {
Node newNode = new Node(student);
if (isEmpty())
first = newNode;
else
last.next = newNode;
newNode.previous = last;
last = newNode;
}
public void display() {
Node current = last;
while (current != null) {
System.out.print(current.student.name + "\b");
System.out.print(current.student.surname + "\b");
System.out.println(current.student.educationType);
current = current.previous;
}
}
。私は並べ替えの方法でノードを置く新しいリストを作成することによって、実装を実装しようとします。そしてそれはまた、それが最大の要素が追加送信
public void Sort() {
LinkedList list = new LinkedList();
Node toStart = last;
while (toStart!=null){
list.addLast(findSmallest(toStart).student);
toStart = toStart.previous;
}
}
「Whileループ」の外に行かないと私は手動でassign'last「to'smallestは」それがうまくいく場合。
public Node findSmallest(Node toStartFrom) {
Node current = toStartFrom;
Node smallest = toStartFrom; //if i put here `last` it will work correctly
while(current != null) {
if (smallest.student.name.compareToIgnoreCase(current.student.name) > 0) smallest = current;
current = current.previous;
}
return smallest;
}
}
public class Node {
public Student student;
public Node next;
public Node previous;
public Node(Student student) {
this.student = student;
}
}
public class Student {
public String name;
public String surname;
public String educationType;
static public Student createStudent() {
....
return student;
}
}
にこれを有効にするには余りにも難しいことではありません
smallest = startnode
next =startnode.next
while(next != null)
compare next with smallest, and assign accordingly
next = next.next
のようなものを試してみてください。また、これが課題の場合は、宿題としてタグ付けする必要があります。 –
どういう意味で「うまくいきませんか? NPEが動作していないか、ランダムな復帰が動作していないか、または何ですか?また、逆の順序でリストをトラバースする理由はありますか?私はnode.nextが大会になると感じています – SetSlapShot