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

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

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.

 

C++实现代码:

#include
#include
using namespace std;//Definition for singly-linked list.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(head==NULL) return NULL; ListNode *p=head; ListNode *pre=head; ListNode *qpre=NULL; ListNode *q=NULL; int count=0; while(p) { count++; if(count==m) { qpre=pre; q=p; } else if(count==n) break; pre=p; p=p->next; } cout<
val<
val<
next; ListNode *qq=NULL; p->next=NULL; p=q->next; cout<
val<
next=pp; while(p) { qq=p->next; cout<
val<
next=q; q=p; cout<
val<
val<
next=q; else head=q; return head; } void createList(ListNode *&head) { ListNode *p=NULL; int i=0; int arr[10]= { 9,8,5,4,4,3,3,3,2,1}; for(i=0; i<3; i++) { if(head==NULL) { head=new ListNode(arr[i]); if(head==NULL) return; } else { p=new ListNode(arr[i]); p->next=head; head=p; } } }};int main(){ Solution s; ListNode *L=NULL; s.createList(L); ListNode *head=L; while(head) { cout<
val<<" "; head=head->next; } cout<
val<<" "; L=L->next; }}

 

转载地址:http://ccybm.baihongyu.com/

你可能感兴趣的文章
1、查找字符位置函数
查看>>
去掉标题栏/ActionBar后点击menu键时应用崩溃
查看>>
求1+2+3+...+n
查看>>
bzoj 1854: [Scoi2010]游戏
查看>>
bzoj 1432: [ZJOI2009]Function
查看>>
HashMap泛型使用
查看>>
MTK Sensor越界导致的系统重启问题分析报告
查看>>
Swift-JSON Encode && Decode
查看>>
(效果五)js获取客户端ip地址及浏览器信息
查看>>
XAML中的空格、换行、Tab
查看>>
Python解析XML
查看>>
第43条:返回零长度的数组或者集合,而不是null
查看>>
初识numpy的多维数组对象ndarray
查看>>
java代码随机数100个,10个一输出显示======
查看>>
初始化代码块
查看>>
[NOI2008]志愿者招募
查看>>
Linux——网络端口的状态netstat、ifconfig
查看>>
canvas元素简易教程(5)(大部分转自火狐,自己只写了简单的代码分析)
查看>>
ArcCore重构-生成%_offset.h文件
查看>>
关于kafka的新的group无法订阅到topic中历史消息的问题
查看>>