当前位置: 首页> 财经> 股票 > 刷算法题之链表专题

刷算法题之链表专题

时间:2025/7/18 10:06:51来源:https://blog.csdn.net/qq_41929416/article/details/141757042 浏览次数:1次

链表的定义:用一组任意的存储单元存储线性表的数据元素。
注意:存储单元可以是连续的,也可以是不连续的
链表的分类:
静态链表:
动态链表:

leetcode203

删除链表中的元素的时候,

// 对原链表操作
struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode *tmp; // 存放临时节点,while( head != NULL && head->val == val) // 若链表中的元素 [1,1,1,1,1] 删除的头节点{tmp = head;head = head->next;free(tmp); // 要释放的元素}struct ListNode * curt = head; // 删除的元素并不会改变头节点while(curt != NULL && (tmp = curt->next)){  if(tmp->val == val) // 若cur->next的值等于val{  curt->next = tmp->next; // 改变链表的前驱, 将cur->next设置为cur->next->next并删除cur->nextfree(tmp);} else {curt = curt->next;} }return head;
}// 构造一个虚拟头节点
struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* new_head= (struct ListNode*)malloc(sizeof(struct ListNode));new_head->next = head; // 为head构造一个虚拟节点的前驱节点struct ListNode *cur = new_head; // 将当前节点指向headwhile(cur->next != NULL){if(cur->next->val == val){struct ListNode *tmp = cur->next;cur->next = cur->next->next;free(tmp);}else{cur = cur->next;}}head = new_head->next;free(new_head);return head;
}
关键字:刷算法题之链表专题

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: