将单链表的每K个节点之间逆序
将单链表的每K个节点之间逆序
-_-struggle 发表于1年前
将单链表的每K个节点之间逆序
  • 发表于 1年前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

//将单链表的每K个节点之间逆序
public Node reverseKNodes( Node head, int k) {
    if( k<2) return head;
    
    Node cur = head;
    Node start = null;
    Node pre = null;
    Node next = null;
    int count = 1;
    
    while( cur != null) {
        next = cur.next;
        if( count==k) {
            start = pre==null ? head:pre.next;
            head = pre==null ? cur:head;
        
            resign( pre, start, cur, next);
            pre = start;
            count=0;
        }
        count++;
        cur = next;
    }
    return head;
}


public void resign( Node left, Node start, Node end, Node right) {
    Node pre = start;
    Node cur = start.next;
    Node next = null;
    
    while( cur!=right) {
        next = cur.next;
        cur.next = pre;
        pre = cur;
        cur = next;
    }
    
    if( left!=null)
        left.next = end;
    start.next = right;
}

共有 人打赏支持
粉丝 4
博文 137
码字总数 42149
×
-_-struggle
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: