码迷,mamicode.com
首页 > 其他好文 > 详细

单链表每隔k反转

时间:2019-01-13 20:25:07      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:情况   特殊情况   rev   scanner   link   next   int   单链表   迭代   

初步版本,没有考虑特殊情况。

import java.util.*;

class Node{
 int data;
 Node next;
 public Node(int data) {
  this.data = data;
 }
}

class Link{
 Node head = null;
 Node tmp = null;
 
 public void addnode(int data) {
  Node n = new Node(data);
  if(head == null) {
   head = n;
   tmp = head;
   return;
   }
  tmp.next = n;
  while(tmp.next != null)//确保tmp在链尾
   tmp = tmp.next;
 }
 
 public Link reverselink(Link a) {//反转:迭代,从表头开始一个个加到另一个表中。
  Link b = new Link();
 while(a.tmp!=null) {
  a.tmp = a.head.next;
  a.head.next = b.head;
  b.head = a.head;
  a.head = a.tmp;
 }
  return b;
 }
 
 public Link addlink(Link a, Link b) {//把b加到a后面:先找到a的尾巴,再连起来。
  a.tmp = a.head;
  while(a.tmp.next != null) {
   a.tmp = a.tmp.next;
  }
  a.tmp.next = b.head;
  return a;
 }
 
 public Link reverselink(Link a,int num, int k) {//每隔k反转:把a分割,一段一段反转,剩余补在最后。
    Link c = new Link();
  a.tmp = a.head;
       for(int i = num-k; i >= 0; i-=k) {
   Link b = new Link();
   for(int count = k; count > 0; count--) {
       b.addnode(a.tmp.data);
       a.tmp = a.tmp.next;    
      }
   if(c.head == null)
   {c = reverselink(b);
   }
   else
   {c.addlink(c,reverselink(b));
   }
 }
     if(a.tmp != null) {
      a.head = a.tmp;
     c.addlink(c,a);
     }
  return c;
 }
 
 public void printLink(Link a) {//输出
  a.tmp = a.head;
  if(a.tmp == null)
  {System.out.println("null");}
  else{
   while(a.tmp.next != null) {
   System.out.print(a.tmp.data +" ");
   a.tmp = a.tmp.next;
      }
   System.out.print(a.tmp.data);
  }
 }
 
}
 
 
public class Main {
 
 public static void main(String[] args) {
  Scanner in = new Scanner (System.in);
  int num = in.nextInt();
  int k = in.nextInt();
  Link L =new Link();
  for(int i=0; i<num; i++) {
   L.addnode(in.nextInt());
  }
  L.printLink(L.reverselink(L,num,k));  
  in.close();
 }

}

单链表每隔k反转

标签:情况   特殊情况   rev   scanner   link   next   int   单链表   迭代   

原文地址:https://www.cnblogs.com/dyq19/p/10263788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!