leetcode Reverse Nodes in k-Group

class Solution {
public:
    ListNode *reverseKGroup(ListNode *head, int k) {
    // Start typing your C/C++ solution below
    // DO NOT write int main() function
    int n=k;
    int len=0;
    ListNode *p=head;
    if (head == NULL || head->next == NULL||k<=1) return head;
    while (p)
    {
        len++;
        p=p->next;
    } 
    if (n > len) return head;        
    ListNode *q=head;
    p = NULL;        
    while (q && n>0)
    {
        ListNode *ne=q->next;
        q->next = p;
        p=q;
        q=ne;
        n--;
    }
    if (len - k >= k)
        head->next = reverseKGroup(q,k);
    else
        head->next = q;
    return p;
  }
};

  

posted @ 2013-06-30 22:15  代码改变未来  阅读(1064)  评论(0编辑  收藏  举报