Rotate List
2016-08-27 00:20
176 查看
描述
Given a list, rotate the list to the right by k places, where k is non-negative.For example: Given 1->2->3->4->5->nullptr and k = 2, return 4->5->1->2->3->nullptr.
分析
先遍历一遍,得出链表长度len,注意k 可能大于len,因此令k% = len。将尾节点next 指针指向首节点,形成一个环,接着往后跑len- k 步,从这里断开,就是要求的结果了。
(1)记录初始首尾节点指针和长度
(2)首尾链接
()找到断开处的两个节点指针
代码
class Solution { public: ListNode *rotateRight(ListNode *head, int k) { if (head == nullptr || k == 0) return head; int len = 1; ListNode* p = head; while (p->next) { // 求长度 len++; p = p->next; //p指向尾节点 } k = len - k % len; p->next = head; // 首尾相连 for(int step = 0; step < k; step++) { p = p->next; //接着往后跑 } //p指向倒数第k+1个数 head = p->next; // 新的首节点 p->next = nullptr; // 断开环 return head; } };
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- Node.js环境下JavaScript实现单链表与双链表结构
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)