题解 | #调整牛群顺序#

调整牛群顺序

https://www.nowcoder.com/practice/a1f432134c31416b8b2957e66961b7d4

考察知识点:排序,指针

解题分析:这里的解题思路就是创建一个head_list链表,使其与tmp_head链表始终相差n-1个成员,这样在tmp_head遍历到最后一个成员的时候,head_list成员就遍历到 了倒数第n-1个成员,那么第n个成员就是head_list->next,只需要将这个成员移动到最后就可以完成解题了

采用的编码语言:C

完整的编码代码:如下所示

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param n int整型 
 * @return ListNode类
 */
struct ListNode* moveNthToEnd(struct ListNode* head, int n ) {
    struct ListNode *tmp_head = head;
    struct ListNode *head_list = NULL;
    int count = 0;

    while (1) {
        if (tmp_head->next != NULL) {	// 如果不是最后一个成员,就更新当前成员的地址为下一个成员的地址
            if (count == (n-1))		// 当tmp_head遍历了 n-1 便后,就给head_list赋值链表头,使其与tmp_head差 n-1个成员
                head_list = head;
            else if (count > (n-1))		// 更新tmp_head使其与tmp_list始终差值在n-1上
                head_list = head_list->next;
            
            tmp_head = tmp_head->next;		// 更新当前tmp_head为下一个成员
        } else {		// 如果已经遍历到了最后一个成员
            if (head_list != NULL) {	// 已经初始化了head_list,也就是整个链表长度大于n的情况下,head_list的next成员就是我们需要找到的倒数第n个成员,将其移动到最后一个成员
                tmp_head->next = head_list->next;
                head_list->next = head_list->next->next;
                tmp_head->next->next = NULL;
            } else if (count == (n-1)) {	// 这里当整个链表的长度和n相等的情况下,head_list还没来得及初始化,就已经遍历到了链表最后一个成员;这时候需要将第一个成员移动到最后一个
                tmp_head->next = head;
                head = head->next;
                tmp_head->next->next = NULL;
            }
            break;
        }
        count++;
    }

    return head;
}

面试高频TOP202解析 文章被收录于专栏

采用Java,C,Python等方法去解答面试高频TOP202题目,

全部评论

相关推荐

06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
07-25 11:26
清华大学 Java
打开电脑,思绪又回到了7月份刚开始的时候,感觉这个月过的如梦如幻,发生了太多事,也算是丰富了我本就是平淡的人生吧太早独立的我习惯了一切都是自己做决定,拥有绝对的决定权,而且永远不会听取别人的建议。我就是那个恋爱四年出轨的男主啦,感觉既然在牛客开了这个头,那我就要做个有始有终的人。从我出轨到结束再到和女朋友和好如初真的太像一场梦了,短短的一个月我经历了太多,也成长了很多,放下了那些本就不属于我的,找回了那些我不该放弃的。我的人生丰富且多彩,但人不能一直顺,上天总会让你的生活中出点乱子,有好有坏,让你学会一些东西,让你有成长。我和女朋友的恋爱四年太过于平淡,日常除了会制造一些小浪漫之外,我们的生活...
段哥亡命职场:不得不说,我是理解你的,你能发出来足见你是个坦诚的人,至少敢于直面自己的内心和过往的过错。 这个世界没有想象中那样非黑即白,无论是农村还是城市,在看不见的阴影里,多的是这样的事。 更多的人选择站在制高点去谩骂,一方面是社会的道德是需要制高点的,另一方面,很多人不经他人苦,却劝他人善。 大部分的我们,连自己生命的意义尚且不能明晰,道德、法律、困境,众多因果交织,人会迷失在其中,只有真的走出来之后才能看明白,可是没走出来的时候呢?谁又能保证自己能走的好,走的对呢? 可是这种问题有些人是遇不到的,不去追寻,不去探寻,也就没了这些烦恼,我总说人生的意义在过程里,没了目标也就没了过程。 限于篇幅,没法完全言明,总之,这世界是个巨大的草台班子,没什么过不去了,勇敢面对,革故鼎新才是正确,祝你早日走出来。查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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