Reverse Linked List II

xiaoxiao2021-02-28  130

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 mn satisfy the following condition: 1 ≤ m ≤ n ≤ length of list.

来源: https://leetcode.com/problems/reverse-linked-list-ii/#/description #include<string>   #include <vector> using namespace std; // Definition for a binary tree node. //Definition for singly-linked list.  struct ListNode {      int val;      ListNode *next;      ListNode(int x) : val(x), next(NULL) {}  }; class Solution { public:     ListNode* reverseBetween(ListNodeheadint mint n) {         if (m == n)         {             return head;         }         int iReverse = n - m+1 ;         ListNode *resNode = new ListNode(0);         resNode->next = head;         ListNode* curNode = resNode;         while (--m)         {             curNode = curNode->next;         }         ListNode* m1Node = curNode;//(m-1)位置的节点指针         ListNode* mNode = curNode->next;//m节点的指针         curNode = mNode->next;//(m+1)节点的指针                  int te = 0;         ListNode* temp = mNode;         while (--iReverse)         {             ListNode* nextNode = curNode->next;             curNode->next = temp;             temp = curNode;             curNode = nextNode;                             }                          m1Node->next = temp;         mNode->next = curNode;         return resNode->next;             } };
转载请注明原文地址: https://www.6miu.com/read-44519.html

最新回复(0)