我的代码有问题,我创建了一个单链表类,您可以在其中添加、删除、修改、合并等......但是,我正在尝试一个简单的冒泡排序并且遇到了列表存在的问题未正确排序。这里有一些注意事项:
- 它是链表的自定义实现
- 单链表的节点包含两件事:一个包含客户所有数据的 CustomerFile 对象和一个指向列表中下一项的“下一个”节点指针
- 该列表按每个节点的客户文件中存储的姓氏按升序 (AZ) 排序
- 添加记录功能将节点插入到列表中的正确位置,因此列表最初不需要排序 - 但是如果更改姓氏,作为程序的一部分,列表需要再次排序
- 我宁愿不创建一个新列表并在该列表上重新使用此插入记录来创建一个新列表,因为这是内存密集型的,我的任务是尽可能高效
- 链表的结构不能改变 - 已经决定了,我太远了,无法更改为数组之类的东西
- 该列表有一个头节点,它有下一个项目但没有尾节点。它有一个指定的 NULL next 指针来指示列表的结尾
编码
public static void sortList()
{
if (isEmpty() == true)
{
System.out.println("Cannot sort - the list is empty");
}
else if (getHead().getNext() == null)
{
System.out.println("List sorted");
}
else
{
Node current = getHead().getNext();
CustomerFile tempDat;
boolean swapDone = true;
while (swapDone)
{
current = getHead().getNext();
swapDone = false;
while (current != null)
{
if (current.getNext() != null &&
current.getData().getSurname().compareTo(
current.getNext().getData().getSurname()) >0)
{
tempDat = current.getData();
current.setData(current.getNext().getData());
current.getNext().setData(tempDat);
swapDone = true;
}
current = current.getNext();
}
}
if (getHead().getData().getSurname().compareTo(
getHead().getNext().getData().getSurname()) >0)
{
current = getHead().getNext();
getHead().setNext(current.getNext());
setHead(current);
}
}
}
我会很感激反馈