代码如下:
package Suanfa;
public class Test1 {
public static void main(String[] args) {
ListNode head=new ListNode(1);
ListNode a=new ListNode(2);
ListNode b=new ListNode(3);
ListNode c=new ListNode(4);
head.next=a;
a.next=b;
b.next=c;
head=reverseKGroup(head,2);
System.out.println(head);
}
public static ListNode reverse(ListNode head) {
if (head == null) {
return head;
}
ListNode pre = head;
ListNode cur = head.next;
ListNode temp;
while (cur != null) {
temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
head.next = null;
return pre;
}
public static ListNode reverseKGroup (ListNode head, int k) {
if (head == null||head.next==null||k==1) {
return head;
}
ListNode res=new ListNode(0);
res.next=head;
int length=0;
ListNode pre=res,cur=head,temp=null;
while(head!=null) {
length++;
head=head.next;
}
for(int i=0;i<length/k;i++) {
for(int j=1;j<k;j++) {
temp=cur.next;
cur.next=temp.next;
temp.next=pre.next;
pre.next=temp;
}
pre=cur;
cur=cur.next;
}
return res.next;
}
}
关于如何进行组内链表的反转,思想如下:
|