我想将给定的数据添加到已经排序的循环链接列表中,以便结果列表也被排序。Node
已经提供了具有public int data
和public Node next
作为类成员的类。
一个函数addNode(Node head)
将被实现,它将一个已知的数据(9)插入到列表中。Node head
是循环链表的头指针。
我考虑过以下案例
当列表为空时,创建节点,将其数据设置为 9 并将其 next 引用到自身。将新创建的节点作为头部。
当列表仅包含一项时。修改第一个节点的next指针指向新节点,新节点的next指针指向给定的头节点。使头节点指向值最低的节点。
当插入的数据最小时,即小于头节点所指向的节点的数据,插入到头节点之前。
当要在两个节点之间插入数据时。所以我正在使用while循环,它将找到将插入新数据的节点并相应地修改节点的next指针。
当我提交代码时,它以某种方式失败了一个我无法找到的测试用例。有人可以帮助我找出我的逻辑中可能忽略的条件。
下面是实现的代码:
public static Node addElement(Node input1)
{
//Write code here
Node result = new Node();
Node current = new Node();
current = input1;
Node value = new Node();
value.data = 10;
if(current == null){
value.next = value;
result = value;
}
else if(current.next == current){
value.next = input1;
current.next = value;
result = current.data < value.data ? current : value;
}
else if(value.data < current.data){
while(current.next != input1)
current = current.next;
current.next = value;
current.next.next = input1;
result = current.next;
}
else{
while(current.next != input1 && current.next.data <= value.data)
current = current.next;
Node currentNext = current.next;
current.next = value;
current.next.next = currentNext;
result = input1;
}
return result;
}