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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章