剑指 Offer 18. 删除链表的节点

简介: 剑指 Offer 18. 删除链表的节点

剑指Offer18.删除链表的节点

解题思路

可以用一个带哨兵位的头节点作为链表的头。把不等于该值的节点尾插到新链表的后面。最后释放该哨兵节点。

代码

struct ListNode* deleteNode(struct ListNode* head, int val){
    struct ListNode *phead=(struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode *tail=phead;
    phead->next=NULL;
    struct ListNode* cur=head;
    while(cur)
    {
        if(cur->val==val)
        {
            struct ListNode* temp=cur->next;
            free(cur);
            cur=temp;
        }
        else
        {
            tail->next=cur;
            cur=cur->next;
            tail=tail->next;
        }
        
    }
    //最后这里要制成空
    tail->next=NULL;
    struct ListNode* newhead=phead->next;
    free(phead);
    return newhead;
}
相关文章
|
2月前
|
存储 Python
删除链表节点详解
删除链表节点详解
|
20天前
|
算法
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
|
2月前
|
存储 Python
链表中删除节点
链表中删除节点
|
1月前
24. 两两交换链表中的节点
24. 两两交换链表中的节点
|
1月前
|
存储
删除链表的节点
删除链表的节点
15 0
|
1月前
|
存储 SQL 算法
|
1月前
|
SQL 算法 数据挖掘
力扣题目 19:删除链表的倒数第N个节点 【python】
力扣题目 19:删除链表的倒数第N个节点 【python】
|
1月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
1月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
1月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
14 2