本文主要是介绍[算法导论] 92.反转链表|| (部分反转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
0. 题目
1. 递归
class Solution {
public:ListNode* reverseN(ListNode* head,int n) { //反转n个节点 n=2 :[1,2,3,4,5]反转1,2if(n==1) return head;ListNode *tail = head->next; //2 3 4 5(tail指向反转链表 反转部分的尾节点)ListNode *p=reverseN(head->next,n-1); // p=(2,3,4,5),n=1head->next = tail->next; //头插法,插入head:1 , 得到 (2 1)3 4 5tail->next = head;return p;}ListNode* reverseBetween(ListNode* head, int l, int r) {//虚拟头节点,用于返回ListNode ret(0,head);ListNode *p=&ret; int cnt = r-l+1;while(--l) p = p->n
这篇关于[算法导论] 92.反转链表|| (部分反转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!