如何使链表排序?
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/… 你可以在这里查看。我已经在这里编码了。以上是关于如何使链表排序?的主要内容,如果未能解决你的问题,请参考以下文章