//将单链表的每k个节点之间逆序
//利用栈结构
public Node reverseKNode(Node head,int k){
if(k<2){
return head;
}
Stack<Node> stack=new Stack<Node>();
Node newHead=head;
Node cur=null;
Node pre=null;
Node next=null;
while(cur!=null){
next=cur.next;
stack.push(cur);
if(stack.size==k){
pre=resign(stack,pre,next);
newHead=newHead==head?cur:newHead;
}
cur=next;
}
return newHead;
}
public Node resign(Stack<Node>,Node left,Node right){
Node cur=stack.pop();
if(left!=null){
left.next=cur;
}
Node next=null;
while(!stack.isEmpty()){
next=stack.pop();
cur.next=next;
cur=next;
}
cur.next=right;
return cur;
}
链表-将单链表的每k个节点之间逆序
猜你喜欢
转载自blog.csdn.net/weixin_42146769/article/details/88386906
今日推荐
周排行