java - 为双向链表的实现编写一个 add 方法,该链表在我向其中添加对象时进行排序

标签 java list sorting

基本上如上所述,我有自己的双向链表实现,我希望它在使用 compareTo 方法添加对象时对它们进行排序。

public void add(E c)
{
Node<E> finger = head;
while (finger != null && ((finger.value().compareTo(c)) > 0))
    finger = finger.Next();


if(finger != null && finger.Next() != null && finger.Previous() != null)
{
    Node<E> n = new Node<E>(c);
    n.setPrev(finger);
    n.setNext(finger.Next());
    finger.Next().setPrev(n);
    finger.setNext(n);
    count++;
}
else if(finger !=null && finger.Next() == null && finger.Previous() != null)
    this.addLast(c);
else if(finger !=null && finger.Next() != null && finger.Previous() == null)
    this.addFirst(c);
else{this.addFirst(c);}     
}

然后我跑

DList<String> DD = new DList<String>();
DD.add("d");
DD.add("e");
DD.add("f");
DD.add("a");
DD.add("b");
DD.add("c");
DD.add("g");
DD.add("h");

for(int i = 0; i < DD.size();i++)
    System.out.print(DD.get(i));

并且输出是 hgcbafed。

这里有什么问题吗?

最佳答案

Node<E> finger = head;
if(null == head){
    head = new Node<E>(c);
    return;
}

while (finger.next != null && ((finger.value().compareTo(c)) > 0))
    finger = finger.Next();    
Node n = new Node<E>(c);
n.next = finger.next;//n.setNext(finger.getNext();
finger.next = n;//finger.setNext(n);

关于java - 为双向链表的实现编写一个 add 方法,该链表在我向其中添加对象时进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115559/

相关文章:

java - 空指针异常 Android 应用程序

java - 无法插入数组列表中的最后一个位置

java - 根据文本字段过滤jTable

python - 将列表列与第二个列表进行比较并返回第三个列表中的项目

python - 如何在不必编写 20 个 if 语句或制作 20 个列表/字典的情况下进行以下比较?

C++ - 使用 std::list,如何打印对象私有(private)成员的链表?

jquery Datatables - 如何实现服务器端获取和客户端排序

java - Gradle 不在命令行上执行任何测试

java - 当加载后属性文件不存在时,使用外部属性文件的属性

Java:合并 2 个列表 <String[]>