力扣(LeetCode) ——移除链表元素(C语言)
题目:移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点 。
示例1:
输入: head = [1,2,6,3,4,5,6], val = 6
输出: [1,2,3,4,5]
解释: 删除与val相同的值,返回新的头节点。
示例2:
输入: head = [7,7,7,7], val = 7
输出: []
解释: 返回空。
解题思路:
题目要求返回新的头节点,需要malloc,然后通过循环遍历节点找到与val值相同的节点,改变节点的指向。
最终代码:
typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val)
{ListNode* newHead = (ListNode*)malloc(sizeof(ListNode));newHead->next = head;ListNode* pcur = newHead;while(pcur->next){if(pcur->next->val == val){pcur->next = pcur->next->next;}else{pcur = pcur->next;}}return newHead->next;
}