链表-将单链表的每k个节点之间逆序

//将单链表的每k个节点之间逆序
//利用栈结构
public Node reverseKNode(Node head,int k){
    if(k<2){
        return head;
    }
    Stack stack=new Stack();
    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 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个节点之间逆序,链表,算法)