leetcode刷刷题(32) ---- 删除链表的节点(C语言版)

2020-2-14

  • Whatever is worth doing is worth doing well.
      任何值得做的,就把它做好。

题目

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。

示例 1:
输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
示例 2:
输入: head = [4,5,1,9], val = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
说明:题目保证链表中节点的值互不相同。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

个人解答:(C版本)

  • 找到那个值,删掉即可。
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* deleteNode(struct ListNode* head, int val){
    struct ListNode* p = head;

    if(NULL == head)
        return NULL;
    
    if(head->val == val)
    {
        head = head->next;
        free(p);

        return head;
    }
        
    struct ListNode* q = p->next;
    while(NULL != q)
    {
        if(q->val == val)
        {
            p->next=q->next; 
            free(q);

            break;
        }

        p = p->next;
        q = p->next;
    }

    return head;
}
  • 结果:
    在这里插入图片描述
他山之石:
发布了251 篇原创文章 · 获赞 168 · 访问量 31万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章