如果标题不够混淆,可能会出现这种情况。我有一个链表,其中包含具有名字和姓氏的人以及其他一些变量。该列表必须先按姓氏排序,然后按名字排序。到目前为止,我按姓氏的字母顺序将人员插入列表中。然后我尝试遍历列表,如果两个姓氏相同,我检查名字和交换。但我有一个错误。按名称对排序后的链表进行排序
Inserted alphabetically into the list by last name, last,first
Acy,Mary
Acy,Clayton
Bob,Lonnie
Toni,Lonnie
After my so call "sort" of first names
Acy,Mary
Bob,Lonnie
Acy,Clayton
Toni,Lonnie
你可以看到它是按姓氏排序的。我试图按名字排序每个相同的姓氏。这是我所得到的输出
public void sortFirstNames(){
System.out.println("here");
PeopleNode previous = null;
PeopleNode current = head;
PeopleNode temp;
if(head == null || head.next == null){
return;
}
while(current != null && current.next != null && current.lastName.compareTo(current.next.lastName) == 0){ //traverse the list
if((current.firstName).compareTo(current.next.firstName) > 0){ //see which first name goes first
temp = current.next.next;
current.next.next = temp.next;
temp.next = current.next;
current.next = temp;
current = temp.next;
}
current = current.next;
}
}
它不会改变的列表中的所有,我已提意见的提醒,但还没有使它发挥作用。有人有什么主意吗?
基本上我试图说,虽然两个姓氏是相同的检查名字,然后交换他们,如果需要的话。
尝试详细说明错误的性质。在第一次读取时,它看起来像只交换了人员的姓名,而不是链接列表的实际元素。如果有除名称以外的数据,则不会交换。但我不确定。 – irh
是的,当我输入标签时,意外击中了输入,因此在我完成之前发布。我现在更新了它。 –
我添加了[tag:java]标签,因为它看起来像Java。如果不是,请随意将其替换为适当的语言标签。 – Dukeling