首页 > 试题广场 >

旋转链表

[编程题]旋转链表
  • 热度指数:4046 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定链表的头节点,旋转链表,将链表每个节点往右移动 k 个位置,原链表后 k 个位置的节点则依次移动到链表头。

即,例如链表 : 1->2->3->4->5 k=2 则返回链表 4->5->1->2->3

数据范围:链表中节点数满足
示例1

输入

{1,2,3,4,5},2

输出

{4,5,1,2,3}
示例2

输入

{1,2,3},3

输出

{1,2,3}

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
struct ListNode* rotateLinkedList(struct ListNode* head, int k ) {
    if(head==NULL)
    {
        return NULL;
    }
    struct ListNode* head1=head;
    int len = 1;
    while(head1->next)
    {
        head1=head1->next;
        len++;
    }
    if(len==1)
    {
        return head;
    }
    k%=len;
    head1->next=head;
    int n = len-k;
    struct ListNode* prev=NULL;
    while(n)
    {
        prev=head;
        head=head->next;
        n--;
    }
    prev->next=NULL;
    return head;
}
发表于 2024-03-31 22:36:45 回复(1)

问题信息

难度:
1条回答 1670浏览

热门推荐

通过挑战的用户

查看代码