The basic idea is as follows:
- Create a
new_headthat points toheadand use it to locate the immediate node before them-th (notice that it is1-indexed) nodepre; - Set
curto be the immediate node afterpreand at each time move the immediate node aftercur(namedmove) to be the immediate node afterpre. Repeat it forn - mtimes.
1 class Solution { 2 public: 3 ListNode* reverseBetween(ListNode* head, int m, int n) { 4 ListNode* new_head = new ListNode(0); 5 new_head -> next = head; 6 ListNode* pre = new_head; 7 for (int i = 0; i < m - 1; i++) 8 pre = pre -> next; 9 ListNode* cur = pre -> next; 10 for (int i = 0; i < n - m; i++) { 11 ListNode* move = cur -> next; 12 cur -> next = move -> next; 13 move -> next = pre -> next; 14 pre -> next = move; 15 } 16 return new_head -> next; 17 } 18 };
本文介绍了一种在链表中实现链表反转的方法,通过创建一个新的头节点并使用该节点来定位并操作链表中的节点,实现了从第m个节点到第n个节点之间的链表反转。具体步骤包括初始化新头节点、遍历链表至指定位置、重新连接链表节点等。
554

被折叠的 条评论
为什么被折叠?



