如何返回一个head为最小元素,tail为最大元素的链表?
函数shiftSmallLarge()将链表的头节点作为参数,并在执行两次移位后返回头指针。
static Node shiftSmallLarge(Node head){
if(head==null){
return null;
}
Node temp=head;
Node min=head;
Node max=head;
while(temp.next!=null){
if(temp.data<min.data){
min=temp;
}
if(temp.data>max.data){
max=temp;
}
temp=temp.next;
}
}
3条答案
按热度按时间avwztpqn1#
你可以通过两个指针从null开始初始化一个指针,从表头开始初始化另一个指针,得到链表中的上一个节点,从表头开始迭代初始化的另一个节点,直到你想要的节点,在第二个节点之前迭代第一个节点。
e4eetjau2#
用O做遍历链表,找到两个节点(最小节点和最小节点之前的节点)。同样,再找到两个节点(最大节点和最大节点之前的节点)。现在将最小节点作为头节点,并调整链接列表的连续性,因为您有最小节点之前的节点。同样,调整最后的最大节点,因为您有最大的节点和它前面的节点。
camsedfj3#
我认为下面的代码将工作,但它太大。我不能减少它。如果你有更好的想法,请纠正我。
`''
''`