题解 | 删除链表的倒数第n个节点

删除链表的倒数第n个节点

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

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

    //思路
    //遍历链表计算总长度size,设置一个结点指针和前序结点指针,从头遍历size-k个结点,找到目标结点进行删除
    struct ListNode* pTmp = head;
    struct ListNode headNode = { .next = head };
    struct ListNode* pTmpPre = &headNode;
    int size = 0;

    if ((head == NULL) || (n <= 0)) {
        return NULL;
    }
    //遍历链表计算总长度size
    while (pTmp != NULL) {
        pTmp = pTmp->next;
        size++;
    }
    if (size < n) {
        return NULL;
    }
    pTmp = head;
    //从头遍历size - k个结点
    for (size_t i = 0; i < size - n; i++) {
        pTmp = pTmp->next;
        pTmpPre = pTmpPre->next;
    }
    pTmpPre->next = pTmp->next; //删除目标结点

    return headNode.next;
}

全部评论

相关推荐

11-23 15:14
中原工学院 Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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