// Type your C++ code and click the "Run Code" button! // Your code output will be shown on the left. // Click on the "Show input" button to enter input data to be read (from stdin). #include <iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode *reverseBetween(ListNode *head, int m, int n) { if(!head) return NULL; if(m >= n) return head; if(!head->next) return head; // dummy head ListNode *dh = new ListNode(0); dh->next = head; ListNode *pre = dh; ListNode *last = head; ListNode *cur = last->next; for(int i = 1; i < m; i++) { pre = pre->next; last = last->next; cur = cur->next; } for(int i = m; i < n; i++) { last->next = cur->next; cur->next = pre->next; pre->next = cur; cur = last->next; } ListNode *ret = dh->next; delete dh; dh = NULL; return ret; } void printList(ListNode *head) { ListNode *cur = head; int c = 0; while(cur) { cout<<cur->val<<" "; cur = cur->next; c ++; } cout<<" || "<<c<<endl; } int main() { ListNode *head = new ListNode(1); ListNode *cur = head; for(int i = 2; i < 20; i++) { ListNode *n = new ListNode(i); cur->next = n; cur = n; } printList(head); ListNode *rh = reverseBetween(head, 2, 3); printList(rh); char c; cin>>c; return 0; }
欢迎关注微信公众号——计算机视觉:
相关推荐
单链表翻转支持从任意位置翻转链表。分为递归和非递归两种方法,
c++实现单链表的翻转,有输入输出,一目了然。欢迎交流学习
Java实现单链表反转,递归和非递归两种形式。接下来通过本文给大家分享Java实现单链表翻转实例代码,需要的的朋友参考下
主要介绍了PHP实现单链表翻转操作,结合实例形式分析了php单链表的定义、遍历、递归、翻转等相关操作技巧,需要的朋友可以参考下
FFT迭代算法的C++实现,内含比特翻转函数和FFT实现函数
给大家汇总介绍了C++实现翻转单词顺序的三种方法,都非常的简单,需要的朋友可以参考下
一个C程序 实现了单链表的逆序 且复杂度为O n
字符串翻转,单词不翻转C语言实现
主要介绍了用python介绍4种常用的单链表翻转的方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了C++实现单链表删除倒数第k个节点的方法,结合实例形式分析了C++单链表的定义、遍历及删除相关操作技巧,需要的朋友可以参考下
利用c++综合win32API实现黑白翻转棋,包含源代码和生成文件,计算机大作业
c++实现 链表的建立 插入、删除节点 遍历链表 以及翻转链表
基于C++的二叉树构造、翻转、节点总数计算、层高计算、前序打印、层序打印
用MFC实现画硬币 增加,减少硬币,包含C++的源代码及工程文件,
刚学习C++编写的一个翻转棋小游戏,只要将所有棋子反转成同一个颜色即可进入下一关。
完整的MFC项目实现图片的左右、上下的翻转功能
用c++来进行简单的.bmp格式的图形的翻转的编程的源代码。