import java.io.;
import java.util.;
class Node{
public int value;
public Node next;
public Node(int data){
this.value=data;
}
//String数组转链表 非环 public static Node tranStringNoLoop(String[] nums){ Node head=new Node(Integer.parseInt(nums[0])); Node cur=head; for(int i=1;i<nums.length;i++){ cur.next=new Node(Integer.parseInt(nums[i])); cur=cur.next; } return head; } //打印链表[非环] public static void printNodeList(Node head){ StringBuilder sb=new StringBuilder(); while (head!=null){ sb.append(head.value).append(" "); head=head.next; } System.out.println(sb.toString()); }
}
public class Main{
public static Node reverseNodes1(Node head,int K){
if(K<2) {return head;}
Stack<node>stack=new Stack<node>();
Node newHead=head;
Node cur=head;
Node pre=null;
Node next=null;</node></node>
while(cur!=null){ next=cur.next; stack.push(cur); if(stack.size()==K){ pre=resign1(stack,pre,next); newHead = newHead==head?cur:newHead;//第一个K,需要改变头 } cur=next; } return newHead; } public static Node resign1(Stack<Node>stack,Node left,Node right){ Node cur1=stack.pop(); if(left!=null){ left.next=cur1; } Node next=null; while(!stack.isEmpty()){ next=stack.pop();//控制移动方向 cur1.next=next;//反转 cur1=next;//移动 } //连接右边 cur1.next=right; return cur1; } public static void main(String[]args)throws IOException{ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); in.readLine(); String[] nums=in.readLine().split(" "); int K=Integer.parseInt(in.readLine()); Node head=Node.tranStringNoLoop(nums); Node head1=reverseNodes1(head,K); Node.printNodeList(head1); }
}