Leetcode 061 Rotate List
2016-05-08 11:59
274 查看
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->NULL and k = 2,
return 4->5->1->2->3->NULL.
思路:
1)遍历链表得到链表长度
2)找到要调整位置的链表结点的前一个结点
3)调整链表结构
注:当k>链表长度时,k=k%链表长度
具体代码如下:
For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.
思路:
1)遍历链表得到链表长度
2)找到要调整位置的链表结点的前一个结点
3)调整链表结构
注:当k>链表长度时,k=k%链表长度
具体代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode rotateRight(ListNode head, int k) { if(head == null){ return null; } if(k == 0){ return head; } int len = 0; ListNode phead = new ListNode(0); phead.next = head; ListNode p = head; int flag = 0; ListNode end = null; while(p!=null){ len++; if(p.next == null){ end = p; } p = p.next; } if(k == len){ return head; } if(k>len){ k = k%len; } p = phead; while(flag < len-k){ flag++; p = p.next; } end.next = phead.next; phead.next = p.next; p.next = null; return phead.next; } }
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)
- C语言实现输出链表中倒数第k个节点