以排序格式插入链表


package practise;
public class Node 
{
    public int data;
    public Node next;
    public Node (int data, Node next)
    {
        this.data = data;
        this.next = next;
    }
    public  int size (Node list)
    {
        int count = 0;
        while(list != null){
            list = list.next;
            count++;
        }
        return count;
    }
    public static Node insert(Node head, int value) 
    { 
        Node T;
        if (head == null || head.data <= value) 
        {
            T = new Node(value,head);
            return T;
        } 
        else  
        {
            head.next = insert(head.next, value);
            return head;
        }
    }
}

这适用于所有小于第一个或头部的数据值。 大于此值的任何值都不会添加到列表中。因此,例如在我的主方法中 节点根 = 新节点(200,null),我现在创建的大于 200 的任何节点都不会被添加。请用简单的术语解释,谢谢。

代码的问题在于它取决于插入的调用方式。我不知道您如何在代码中调用插入。下面的代码可以正常工作,列表按降序排序:

public class SortedLinkedList {
public static void main(String[] a) {
    Node head = Node.insert(null, 123);
    head = Node.insert(head, 13);
    head = Node.insert(head, 3123);
    head = Node.insert(head, 3);
    head = Node.insert(head, 87);
    head = Node.insert(head, 56);
    head = Node.insert(head, 2332);
    head = Node.insert(head, 5187);
    do {
        System.out.print(head.data + ", ");
        head = head.next;
    } while (head != null);
   }
}
class Node {
public int data;
public Node next;
public Node(int data, Node next) {
    this.data = data;
    this.next = next;
}
public int size(Node list) {
    int count = 0;
    while (list != null) {
        list = list.next;
        count++;
    }
    return count;
}
public static Node insert(Node head, int value) {
    Node T;
    if (head == null || head.data <= value) {
        T = new Node(value, head);
        return T;
    } else {
        head.next = insert(head.next, value);
        return head;
    }
}
}

如果 head.data 小于 value,则不要插入,如果 value小于 head.data,则插入。

if (head == null || head.data <= value)当你在头部插入 200 时,你的问题就在这里。不会添加大于 200 的任何值。因为你head.data <= value.您将 200 添加到 head,然后 head 不再NULL,因此您的程序将检查是否head.data <= value,如果是,请将其添加到列表中。否则不要。

public static Node insert(Node head, int value) 
        { 
            Node T;
            if (head == null || head.data >= value) 
            {
                T = new Node(value,head);
                return T;
            } 
            else  
            {
                head.next = insert(head.next, value);
                return head;
            }
        }

相关内容

  • 没有找到相关文章

最新更新