92. Reverse Linked List II
2016-10-25 21:20
274 查看
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.
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.
#include<iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution { public: ListNode* reverseBetween(ListNode* head, int m, int n) { if(m==n) return head; ListNode *p,*q,*t,*s; ListNode *front=new ListNode(-1); front->next=head; p=front; int count=1; while(count<m)//先找到第m个结点的前驱结点 { p=p->next; count++; } q=p->next;//第m个结点保持不变 count=m; while(count<n) { t=q->next;//取出q后面的元素插入到前面 q->next=t->next;//保证后面链表连接 s=p->next;//取出要插入结点后面的链表 p->next=t;//插入 t->next=s;//连接后面的链表 count++; } return front->next; } }; int main() { ListNode *head,*p; head=NULL; p=head; int N,i; cin>>N; for(i=0;i<N;i++) { ListNode *q=(ListNode *)malloc(sizeof(ListNode)); cin>>q->val; q->next=NULL; if(head==NULL) head=q; else p->next=q; p=q; } int m,n; cin>>m>>n; Solution solve; ListNode *ret=solve.reverseBetween(head,m,n); while(ret) { cout<<ret->val<<' '; ret=ret->next; } return 0; }
相关文章推荐
- Leetcode 92 Reverse Linked List II
- LeetCode-92-Reverse Linked List II 链表反转 各种边界条件
- LeetCode 92 Reverse Linked List II
- 92. Reverse Linked List II
- Leetcode# 92 Reverse Linked List II
- leetcode 92: Reverse Linked List II
- [leetcode-92]Reverse Linked List II(c++)
- 92. Reverse Linked List II
- leetcode[92]Reverse Linked List II
- 算法作业HW10:Leetcode92 Reverse Linked List II
- 92. Reverse Linked List II
- leetcode 92 Reverse Linked List II C++
- 92:Reverse Linked List II翻转链表【链表】
- [LeetCode92]Reverse Linked List II
- ( Leetcode 92 ) Reverse Linked List II
- LeetCode92 Reverse Linked List II
- LinkedList-92-Reverse Linked List II
- 92. Reverse Linked List II
- 92.Reverse Linked List II
- (LeetCode 92)Reverse Linked List II