Java硬件,通过插入排序按字母顺序添加到链表中
我有一个单链表,我想根据姓氏按字母顺序添加。 这是我建立的第二个链表,所以我是新手 我的计划是输入全名,然后在出现空格时将其拆分。我通过以下代码实现了这一点:Java硬件,通过插入排序按字母顺序添加到链表中,java,alphabetical,Java,Alphabetical,我有一个单链表,我想根据姓氏按字母顺序添加。 这是我建立的第二个链表,所以我是新手 我的计划是输入全名,然后在出现空格时将其拆分。我通过以下代码实现了这一点: String y=newNode.getName(); String [] subCurrent=y.split(" "); String last=subCurrent[subCurrent.length-1]; System.out.println(last); 然后比较两个姓氏,一个来自newN
String y=newNode.getName();
String [] subCurrent=y.split(" ");
String last=subCurrent[subCurrent.length-1];
System.out.println(last);
然后比较两个姓氏,一个来自newNode,另一个来自while循环中的当前节点:
Node current=head;
while (current!=null){
String currentName= current.getName();
String [] subCurrent1=currentName.split(" ");
String last2=subCurrent1[subCurrent1.length-1];
System.out.println(last2.compareTo(last));
如果比较结果大于0,则在while循环中的当前节点之前插入newNode:
if( last2.compareTo(last)>0){
// if number is larger than 0, put newNode infront of current.
newNode.setLink(current.getLink());
current.setLink(newNode);
}
如果不是,Id将newNode分配给tail
我的问题是,我关于按字母顺序添加的理论相对正确吗?添加节点时,我的列表不是按字母顺序排列的。例如,我加的第一个名字是“joe z”
然后我加上“约翰c”
约翰c应该放在乔z的前面,然而,我的控制台打印出来了
joey@z.net555-5555乔伊z
john@z.net555-6666约翰·c
然后我加上名字“paul a”
之后的控制台是:
joey@z.net555-5555乔伊z
paul@z.net555-5777保罗a
约翰·c被删除了
我的整个添加方法:
public void addAfter( String email, String name, String number){
Node newNode= new Node( email, name, number ,null);
index++;
newNode.setEmail(email);
newNode.setName(name);
newNode.setNumber(number);
if (head==null){
newNode.setLink(null);
head=newNode;
}
String y=newNode.getName();
String [] subCurrent=y.split(" ");
String last=subCurrent[subCurrent.length-1];
Node current=head;
while (current!=null){
String currentName= current.getName();
String [] subCurrent1=currentName.split(" ");
String last2=subCurrent1[subCurrent1.length-1];
// comparing current getName (last2) to newNode's (last) getName.
if( last2.compareTo(last)>0){ // if number is larger than 0, put newNode infront of current.
newNode.setLink(current.getLink());
current.setLink(newNode);
}
if (last2.compareTo(last)<0){ // if number is less than 0, assign newNode as tail
newNode.setLink(null);
tail=newNode;
}
current=current.getLink();
}
}
public void addAfter(字符串电子邮件、字符串名称、字符串编号){
Node newNode=新节点(电子邮件、名称、编号、空);
索引++;
newNode.setEmail(email);
newNode.setName(name);
newNode.setNumber(number);
如果(head==null){
setLink(空);
头=新节点;
}
字符串y=newNode.getName();
字符串[]次电流=y.split(“”);
最后一个字符串=次电流[次电流.长度-1];
节点电流=头;
while(当前!=null){
字符串currentName=current.getName();
字符串[]subCurrent1=currentName.split(“”);
字符串last2=subCurrent1[subCurrent1.length-1];
//将当前getName(last2)与新节点的(last)getName进行比较。
若(last2.compareTo(last)>0{//若数字大于0,则将newNode放在当前节点的前面。
setLink(current.getLink());
current.setLink(newNode);
}
if(last2.compare)to(last)使用此选项为工作选择最佳集合:如提问者在标题中所述,这是家庭作业,是实现类似集合的类所必需的。