我正在尝试在 Java 中的双向链表上创建冒泡排序,但出现 Null Pointer Exception 错误。我相信当我在头部调用 getPrevious 方法时会出现问题,该方法的值当然为 null。但是,如果不访问其他节点的 getPrevious 方法,我无法考虑如何进行冒泡排序。
我可以实现一个 if 语句来首先检查它是列表的头部还是尾部,但我觉得有一种更聪明的方法可以做到这一点。
我也无法成功运行此构建,因此甚至不确定代码是否可以正常工作。如果您对如何实现这一点有不同的想法,请告诉我。
欢迎任何建议!
public static void bubbleSort(DoubleLinkedList list) //static method used to sort the linked list using bubble sort
{
int i = 0;
int j = 0;
Node currentNode = list.head;
Node previousNode = currentNode;
Node tempNext = currentNode;
Node tempPrevious = currentNode;
for(i=0; i<list.getSize(); i++)
{
for(j=0; j<list.getSize()-1; i++)
{
if(currentNode.getData() > currentNode.getNext().getData())
{
tempNext = currentNode.getNext().getNext();
tempPrevious = currentNode.getPrevious();
currentNode.getPrevious().setNext(currentNode.getNext());
currentNode.getNext().setNext(currentNode);
currentNode.setPrevious(currentNode.getNext());
currentNode.setNext(tempNext);
}
currentNode = currentNode.getNext();
}
}
}