如何使链表排序?

Posted

技术标签:

【中文标题】如何使链表排序?【英文标题】:How to make a linked list sorted? 【发布时间】:2021-01-24 09:16:22 【问题描述】:

在您的链表项目中编写一个 java 方法以在您的链表中执行排序插入。排序插入是这样一种插入,每当您插入一个新元素时,它就会插入到其排序位置。但我没有得到这里的输出是我的代码。


  public void insertSorted(int data) 

    
    Node temp = new Node(data);
    if(head == null || head.Data > data) 
    
        temp.next = head;
        head = temp;
    
    Node head2 = head;
    while(head2.next != null && head2.next.Data < data) 
    
        head2 = head2.next;
    
    temp.next = head.next;
    head.next = temp;


public void Display() 

    Node t = head;
    while(t != null)
    
        System.out.print(t.Data+" -> ");
        t = t.next;
    
    System.out.println("NULL");


【问题讨论】:

为什么你认为条件(curr.Data * 1) != 0 比老式的模2 curr.Data % 2 != 0 更能帮助你定义奇数?这只是一个错字吗? 你好,Alex Rudenko 我编辑了我的问题你能帮我吗? 【参考方案1】:

你可以试试这个,它会像你预期的那样工作->

 public void seprator1(Node curr) 
    if (curr == null || curr.next == null) 
        return;
    

    Node Even, EvenTail, oddStartingNode, oddEndNode;

    Even = EvenTail = oddStartingNode = oddEndNode = null;

    while (curr != null) 
        if (curr.data % 2 == 0) 
            if (Even == null) 
                Even = curr;
                EvenTail = Even;
             else 
                EvenTail.next = curr;
                EvenTail = EvenTail.next;
            
         else 
            if (oddStartingNode == null) 
                oddStartingNode = curr;
                oddEndNode = oddStartingNode;
             else 
                oddEndNode.next = curr;
                oddEndNode = oddEndNode.next;
            
        

        curr = curr.next;
    

    displayNode(Even);
    System.out.println();
    displayNode(oddStartingNode);



private void displayNode(Node node) 
    if (node == null) 
        return;
    
    System.out.print(node.data+" ");
    displayNode(node.next);

【讨论】:

我们将如何显示这些列表? 你好,murari99732 我编辑了我的问题,你能帮我吗? 您可以使用上面将打印的代码。但是在您的解决方案中,您返回的是 int 而不是返回节点。 能不能把上面代码的显示方式写出来? github.com/murari99732/solutionleetcode-adventofcode/blob/… 你可以在这里查看。我已经在这里编码了。

以上是关于如何使链表排序?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何对链表的数进行排序?

如何干净地使用 QuickSort 对链表进行排序 - Python

不知道如何对双向链表进行排序?

从数组冒泡排序迁移到链表冒泡排序

如何使用优先队列对链表进行排序

C语言链表中如何实现对一组数据进行排序?