题解 | #旋转链表#

旋转链表

http://www.nowcoder.com/practice/1ad00d19a5fa4b8dae65610af8bdb0ed

struct ListNode* rotateLinkedList(struct ListNode* head, int k ) 
{
    // write code here
    int count=0;
    struct ListNode*c=head;
    while(c)   // 统计链表长度
    {
        count++;
        c=c->next;
    }
    if(count==0) // 特判长度为零
    {
        return head;
    }
    k%=count;
    if(k==0)    // 特判无需翻转
    {
        return head;
    }
    int i=0;
    struct ListNode*cur=head;
    for(i=0;i<count-k-1;i++)  // 找到反转后的链表头
    {
        cur=cur->next;
    }
    struct ListNode*newhead=cur->next; // 标记新链表头
    cur->next=NULL;
    cur=newhead;
    while(cur->next!=NULL)   // 原链表尾与头链接
    {
        cur=cur->next;
    }
    cur->next=head;
    return newhead;
}
全部评论

相关推荐

09-23 17:42
门头沟学院 Java
兄弟们我绷不住了,小米要求10月份参加编程考试,20级以下(王腾好像21),正式和外包都得去,还要部门大排名,一巴掌给我抽象的回到大学
flex*1022:雷:我们想了很久,到底怎么样才能让用户满意,让工程师保持手感,经过长达180天的思考,我连夜睡服高管,决定发起内部考试,以编程为主
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
09-22 17:59
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务