Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit f755c7e

Browse files
Refine
Signed-off-by: begeekmyfriend <begeekmyfriend@gmail.com>
1 parent cf2719c commit f755c7e

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

025_reverse_nodes_in_k_group/reverse_nodes.c

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,27 @@ struct ListNode {
88

99
static struct ListNode* reverseKGroup(struct ListNode* head, int k)
1010
{
11-
int i, len = 0;
11+
int len = 0;
1212
struct ListNode dummy;
13-
struct ListNode *p = head;
1413
struct ListNode *prev = &dummy;
1514
dummy.next = head;
16-
for (p = head; p != NULL; p = p->next) {
15+
for (; head != NULL; head = head->next) {
1716
if (++len % k == 0) {
18-
struct ListNode *begin = prev->next;
19-
for (i = 1; i < k; i++) {
20-
struct ListNode *next = begin->next;
21-
begin->next = next->next;
22-
next->next = prev->next;
23-
prev->next = next;
17+
/* t always the original first one */
18+
struct ListNode *t = prev->next;
19+
/* loop condition implicits the final state */
20+
while (prev->next != head) {
21+
/* the new segment head */
22+
struct ListNode *h = t->next;
23+
/* deletion */
24+
t->next = h->next;
25+
/* insertion */
26+
h->next = prev->next;
27+
prev->next = h;
2428
}
25-
p = begin;
26-
prev = p;
29+
/* For iteration */
30+
prev = t;
31+
head = t;
2732
}
2833
}
2934
return dummy.next;

0 commit comments

Comments
 (0)