博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode - Reverse Linked List II
阅读量:5349 次
发布时间:2019-06-15

本文共 1516 字,大约阅读时间需要 5 分钟。

leetcode - 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->NULLm = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:

Given mn satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode* reverseBetween(ListNode* head, int m, int n) {12         if(head == NULL || m==n) return head;13         ListNode* tp = head;14         ListNode* h = head;15         ListNode* tail,*prev,*cur,*nxt, *before;16         int count = 0;17         18         prev = NULL;19         cur = head;20         nxt = head->next;21         for(int i=1;i
next;25 }26 before = prev; //被逆置的部分之前的那个节点(有可能是空节点,那就说明是从第一个节点开始的逆置)27 tail = cur; //被逆置的部分最终的尾节点28 for(int i=m;i
next = prev;30 prev = cur;31 cur = nxt;32 nxt =nxt->next;33 }34 cur->next = prev; //现在cur指向的是最后一个需要逆置的节点35 if(before == NULL){ //如果before指向的是空节点,那说明头结点需要改变。36 head = cur;37 }38 else{ //否则将“被逆置的部分之前的那个节点”的next指向当前节点(即最后一个需要逆置的节点) 39        before->next = cur; 40 } 41 tail->next = nxt; //被逆置部分的最后一个节点要连上链表后续的部分 42 return head; 43 } 44 };

 

转载于:https://www.cnblogs.com/shnj/p/4693450.html

你可能感兴趣的文章
Android之布局androidmanifest.xml 资源清单 概述
查看>>
How to Find Research Problems
查看>>
Linux用户管理
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>
图片的显示隐藏(两张图片,默认的时候显示第一张,点击的时候显示另一张)...
查看>>
Docker 安装MySQL5.7(三)
查看>>
python 模块 来了 (调包侠 修炼手册一)
查看>>
关于CSS的使用方式
查看>>
分析语句执行步骤并对排出耗时比较多的语句
查看>>
原生JS轮播-各种效果的极简实现
查看>>
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
关于空想X
查看>>
CF1067C Knights 构造
查看>>
[BZOJ2938] 病毒
查看>>