题解 | #删除链表的节点#

删除链表的节点

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

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param val int整型 
 * @return ListNode类
 */
struct ListNode* deleteNode(struct ListNode* head, int val ) {
    // write code here
    if(head == NULL) {
        return NULL;
    }
    struct ListNode* pre = (struct ListNode*)malloc(sizeof(struct ListNode));  //慢指针
    pre->val = -1;
    pre->next = head;
    struct ListNode* str = head;       //快指针
    struct ListNode* phead = pre;         //头结点定位

    while(str) {
        if(val == str->val) {
            pre->next = str->next;
            str->next = NULL;
            return phead->next;
        }
        str = str->next;
        pre = pre->next;
    }
    return NULL;
}

全部评论

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务