// 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++实现单链表的翻转,有输入输出,一目了然。欢迎交流学习
"C++实现单链表删除倒数第k个节点的方法" 在C++编程中,单链表是一种常用的数据结构,删除单链表中的倒数第k个节点是一种常见的操作。本文将详细介绍C++实现单链表删除倒数第k个节点的方法,并结合实例形式分析了...
在本实验中,我们将实现一个单链表的类,包括链表的创建、链表元素的插入、链表元素的查找、链表元素的删除、打印所有的链表元素、翻转链表等操作。 链表的创建 在本实验中,我们使用模板类来实现单链表,链表的每...
- 翻转链表:改变每个节点的next指针,使其指向当前的前驱节点,实现链表反转。 5. 链表的优缺点: - 优点:动态扩展性好,插入和删除操作相对快速,不需预先知道数据大小。 - 缺点:访问速度慢,因为需要从头...
目标是给定一个单链表和一个整数 k,将链表中的节点按 k 个一组进行翻转,同时保持每组内部的相对顺序不变。如果链表的长度不是 k 的整数倍,那么剩下的部分应该保持原样。 首先,我们来看链表的定义。链表由一系列...
- **数组实现(AQueue.cpp)**:队列是先进先出(FIFO)的数据结构,数组实现中通常使用双端数组,一端入队,另一端出队,当一端达到数组边界时,需要进行数组的翻转或重新分配空间。 - **链式实现(LQueue.cpp)*...
### LeetCode C++解答概述 #### 一、链表(LinkedList) **1.1 Add Two Numbers (2)** - **问题描述**:给定两个非空链表来表示两个非负整数。数字最高位位于链表的首位。将这两个数字相加并返回一个新的链表。 -...
Teapack是一个可能的C++库,它提供了各种数据结构和算法的实现,包括链表。使用Teapack,我们可以方便地实现头插法,因为它可能已经为我们提供了链表类和其他辅助工具。要使用Teapack进行头插法,我们需要了解其API...
例如,链表的节点需要手动分配和释放内存,向量需要动态扩展数组,而map和红黑树则需要实现复杂的树操作,如旋转、颜色翻转等,以确保其平衡性。 项目"tstl2cl_1.0"中的源代码将详细展示如何在C语言中实现这些功能...
C/C++实现冒泡排序算法 冒泡排序是一种简单的排序算法,它重复地遍历列表,比较每对相邻项,必要时交换它们。关键步骤包括: - **初始化一个标志**:用于检测列表是否已经排序完毕。 - **遍历列表**:从第一个...
实验代码包括了`LinkList.cpp`、`CycleLinkList.cpp`、`Stack.cpp`和`Queue.cpp`四个文件,分别对应单链表、循环链表(可能用于链式队列的循环结构)、堆栈和队列的实现。 通过这个实验,学生能够深入理解链表、...
这说明本习题集可能会让学生学习和实践如何用C/C++实现各种数据结构和算法。 “适用于考研党数据结构复习使用”和“题库选取极具代表性,包罗万象”强调了习题集内容的深度和广度,覆盖了考研中可能遇到的各种数据...
4. 在线性表改进的单链表实现中,`mutable`关键字的作用是允许在常量对象中修改`current`指针所指向的节点,使得程序可以**在只读对象上进行修改操作**。 5. 二分查找方法适用于**有序**的数据文件,且通常限于**...
这个题目来自于知名编程学习网站GeeksforGeeks,它要求我们实现一个C++函数来判断一个单链表是否为回文。在这个问题中,我们将探讨如何利用链表的数据结构特性来解决这个问题。 首先,我们要明白链表的基本概念。...
在编程领域,C语言因其简洁、高效和广泛的适用性,被广泛用于系统开发、嵌入式编程以及算法实现。《C语言常用算法》一书及其配套的源代码库,为学习者提供了丰富的实践素材,帮助程序员更好地理解和运用各种经典算法...
1.2.7. 翻转句子中单词的顺序....................................................................... 31 1.2.8. 判断整数序列是不是二元查找树的后序遍历结果 ................................ 33 1.2.9. 查找...