Java 如何实现排序列表
因此,我有一个名为Java 如何实现排序列表,java,list,Java,List,因此,我有一个名为List的类和一个名为SortedList的类,它继承了类列表。还有一个名为node的类。我创建了另一个包含printing方法的类 但是,每次我插入三个名字,例如,我调用printing方法,它只打印我插入的姓氏。所以我的问题是:这个代码会生成一个排序列表吗?如果是这样,为什么只打印姓氏 列表类: public class List { protected Node head; protected int length; public void l
List
的类和一个名为SortedList
的类,它继承了类列表。还有一个名为node的类。我创建了另一个包含printing方法的类
但是,每次我插入三个名字,例如,我调用printing方法,它只打印我插入的姓氏。所以我的问题是:这个代码会生成一个排序列表吗?如果是这样,为什么只打印姓氏
列表类:
public class List {
protected Node head;
protected int length;
public void list()
{
head=null;
length=0;
}
public boolean isEmpty()
{
return head==null;
}
public Node insert(Item a)
{
length++;
head=new Node(a, head);
return head;
}
public class SortList extends List {
private Node head;
public SortList()
{
this.head=null;
}
public Node getFirst()
{
return head;
}
public Node Insert(Item newitem)
{
Node node = new Node(newitem);
Node previous = null;
Node current = head;
while(current!=null && current.getValue().less(newitem))
{
previous=current;
current=current.getNext();
}
if(previous==null)
{
head=node;
}
else
{
previous.setNext(node);
node.setNext(current);
}
return head;
}
public void printlist()
{
Node current = head; //ΑΡΧΗ ΤΗΣ ΛΙΣΤΑΣ.
while(current!=null)
{
current.print();
current = current.getNext();
}
}
分类表类别:
public class List {
protected Node head;
protected int length;
public void list()
{
head=null;
length=0;
}
public boolean isEmpty()
{
return head==null;
}
public Node insert(Item a)
{
length++;
head=new Node(a, head);
return head;
}
public class SortList extends List {
private Node head;
public SortList()
{
this.head=null;
}
public Node getFirst()
{
return head;
}
public Node Insert(Item newitem)
{
Node node = new Node(newitem);
Node previous = null;
Node current = head;
while(current!=null && current.getValue().less(newitem))
{
previous=current;
current=current.getNext();
}
if(previous==null)
{
head=node;
}
else
{
previous.setNext(node);
node.setNext(current);
}
return head;
}
public void printlist()
{
Node current = head; //ΑΡΧΗ ΤΗΣ ΛΙΣΤΑΣ.
while(current!=null)
{
current.print();
current = current.getNext();
}
}
节点类:
public class Node {
private Item info;
private Node next;
public Node(Item dat)
{
info=dat;
}
public Node (Item dat, Node b)
{
info=dat;
next=b;
}
public Item getValue()
{
return info;
}
public void setNext(Node a)
{
next=a;
}
public Node getNext()
{
return next;
}
public void print()
{
info.print();
}
}
在
列表
的实现中,insert()
方法中有一个主要错误:
public Node insert(Item a)
{
length++;
head=new Node(a, head);
return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素
这可以解释为什么您总是只看到插入的最后一个元素
Edit:事实证明,insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用
但是,在排序列表中,有一个插入案例未设置下一个节点:
if(previous==null)
{
head=node;
}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,previous
为null,这是正确的——您的新元素是列表的新头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了
如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素
尝试设置继任者:
if(previous==null)
{
head=node;
head.setNext(current);
}
在列表
的实现中,insert()
方法中有一个主要错误:
public Node insert(Item a)
{
length++;
head=new Node(a, head);
return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素
这可以解释为什么您总是只看到插入的最后一个元素
Edit:事实证明,insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用
但是,在排序列表中,有一个插入案例未设置下一个节点:
if(previous==null)
{
head=node;
}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,previous
为null,这是正确的——您的新元素是列表的新头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了
如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素
尝试设置继任者:
if(previous==null)
{
head=node;
head.setNext(current);
}
在列表
的实现中,insert()
方法中有一个主要错误:
public Node insert(Item a)
{
length++;
head=new Node(a, head);
return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素
这可以解释为什么您总是只看到插入的最后一个元素
Edit:事实证明,insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用
但是,在排序列表中,有一个插入案例未设置下一个节点:
if(previous==null)
{
head=node;
}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,previous
为null,这是正确的——您的新元素是列表的新头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了
如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素
尝试设置继任者:
if(previous==null)
{
head=node;
head.setNext(current);
}
在列表
的实现中,insert()
方法中有一个主要错误:
public Node insert(Item a)
{
length++;
head=new Node(a, head);
return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素
这可以解释为什么您总是只看到插入的最后一个元素
Edit:事实证明,insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用
但是,在排序列表中,有一个插入案例未设置下一个节点:
if(previous==null)
{
head=node;
}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,previous
为null,这是正确的——您的新元素是列表的新头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了
如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素
尝试设置继任者:
if(previous==null)
{
head=node;
head.setNext(current);
}
@ᴳᵁᴵᴰᴼ 你。。。必须使用。。。python不JAVA为什么不能对列表内容的每次更改都使用Collections.sort()
?请查看列表类的结构public void list()
它必须是public void list()
非常感谢,但我必须