我的插入排序功能似乎没有将我的最后两个整数输入:15和8插入到我的双向链表中。我的输出结果是15和8.我在插入排序函数中做错了什么?我提供了我的功能'代码,输入和输出。谢谢。
这是我的插入排序功能:
public void insertionSort(int p)
{
Node n = new Node(p);
Node curr = head;
if(isEmpty())
{
head = n;
}
else
{
if(n.getProb() <= curr.getProb())
{
n.setNext(curr);
curr.setPrev(n);
head = n;
}
else if(n.getProb() > curr.getProb())
{
while(n.getProb() > curr.getProb() && curr.getNext() != null)
{
curr = curr.getNext();
}
if(n.getProb() < curr.getProb())
{
n.setNext(curr);
n.setPrev(curr.getPrev());
curr.setPrev(n);
}
else if(n.getProb() >= curr.getProb())
{
n.setNext(curr.getNext());
n.setPrev(curr);
curr.setNext(n);
}
}
}
size++;
}
这是我的打印功能
public void printSortedList()
{
Node curr = head;
while(curr != null)
{
System.out.println(curr.getProb());
curr = curr.getNext();
}
}
以下是我在主要功能中输入的内容:
public static void main(String [] args)
{
List list = new List();
list.insertionSort(10);
list.insertionSort(5);
list.insertionSort(5);
list.insertionSort(60);
list.insertionSort(5);
list.insertionSort(10);
list.insertionSort(15);
list.insertionSort(8);
list.printSortedList();
}
以下是我的输出:
5
5
5
10
10
60
答案 0 :(得分:0)
您在插入n.getProb() <= curr.getProb()
时遇到错误
在你的代码中
n.setNext(curr);
n.setPrev(curr.getPrev());
curr.setPrev(n);
你
n.getProb() > curr.getProb()
部分代码中的同一问题。
正确插入:
if (n.getProb() <= curr.getProb()) {
n.setNext(curr);
n.setPrev(curr.getPrev());
if (curr.getPrev() != null)
curr.getPrev().setNext(n);//set next to curr's prev
curr.setPrev(n);
} else if (n.getProb() > curr.getProb()) {
n.setNext(curr.getNext());
n.setPrev(curr);
if (curr.getNext() != null)
curr.getNext().setPrev(n);//set prev to curr's next
curr.setNext(n);
}