首页 > 代码库 > LeetCode OJ 92. Reverse Linked List II
LeetCode OJ 92. Reverse Linked List II
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL
, m = 2 and n = 4,
return 1->4->3->2->5->NULL
.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
Subscribe to see which companies asked this question
解答:
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseBetween(struct ListNode* head, int m, int n) { struct ListNode *pNode = head, *tmp_1, *tmp_2, *tmp_head = NULL, *tmp_tail; int count = 0; if(1 != m){ while(NULL != pNode){ count++; if(m - 1 == count){ tmp_tail = tmp_1 = pNode->next; pNode->next = NULL; while(n > count){ tmp_2 = tmp_1->next; tmp_1->next = pNode->next; pNode->next = tmp_1; tmp_1 = tmp_2; count++; } tmp_tail->next = tmp_1; break; } pNode = pNode->next; } } else{ tmp_tail = head; while(n > count){ tmp_2 = head->next; head->next = tmp_head; tmp_head = head; head = tmp_2; count++; } tmp_tail->next = head; head = tmp_head; } return head; }
LeetCode OJ 92. Reverse Linked List II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。