Reverse Nodes in k-Group

来源:互联网 发布:山大网络教育平台登录 编辑:程序博客网 时间:2024/05/07 10:42

这道题目,我的解法思想与Swap Nodes in Pairs那道题基本上是一样的,只不过在翻转group内节点的时候,我使用了数组栈。我的代码如下:

    ListNode* reverseKGroup(ListNode* head, int k) {        int cnt = 0; // 计数        ListNode *sstack[k], *cursor; // 数组栈        ListNode dummy(0), *pre = &dummy, *p = head; // p为待翻转group的第一个节点        pre->next = head; // pre为p之前的节点        while (p) {            cnt = k;            cursor = p;                        for (int i=0; i<k; i++) {                if (cursor == NULL) {                    return dummy.next;                }                sstack[i] = cursor; // group内节点入栈                cursor = cursor->next;            }                        for (int i=k-1; i>=1; i--) { // 翻转group内各节点                sstack[i]->next = sstack[i-1];            }                        pre->next = sstack[k-1]; // 一些连接操作            p->next = cursor;            pre = p;            p = p->next;                 }        return dummy.next;    }




0 0