203.移除链表元素 ,707.设计链表 ,206.反转链表
依旧是没学c++,继续c语言吧。
203.移除链表元素:
力扣链表定义还要先定义初始化结构体,从第一个结点开始,对每一个结点进行检查,若结点的值为key,则删除,然后检查下一个结点,直到所有结点都检查完。基本的删除操作背模板就行了。
struct ListNode* removeElements(struct ListNode* head, int val) {
// 使用虚拟头节点简化处理逻辑
struct ListNode dummy = {0, head};
struct ListNode* p = &dummy,*q = p->next;
while (q!=NULL) {
if (q->val == val) {
p->next = q->next;
free(q);
q = p->next;
} else {
p = q;
q = q->next;
}
}
// 返回调整后的头节点
return dummy.next;
}
707.设计链表:
太多了明天再说吧。
206.反转链表:
使用头插法逆置链表,忘记了明天再写。