核心内容摘要
SolidWorks二次开发(C#)-CustomPropertyManager.Delete自定义属性管理器-删除属性
小龙报个人主页作者简介C研发嵌入式机器人等方向学习者❄️个人专栏《C语言》《【初阶】数据结构与算法》✨永远相信美好的事情即将发生文章目录前言
删除链表中等于给定值 val 的所有节点
1题目
2 算法原理
3代码
反转链表
1题目
2 算法原理
3代码
链表中间节点
1题目
2 算法原理
3代码
总结与每日励志前言链表是 C 语言和数据结构学习的核心考点也是编程入门绕不开的经典题型。
本文聚焦删除指定值节点、反转链表、查找中间节点三大高频链表题从算法原理到代码实现逐拆解用通俗易懂的逻辑和清晰的代码示例帮你吃透链表操作的核心思路。
掌握这些基础题型不仅能夯实指针功底更能为后续复杂数据结构学习筑牢根基。
删除链表中等于给定值 val 的所有节点
1题目链接删除链表中等于给定值 val 的所有节点
2 算法原理创建一个新链表遍历原链表把不等于val值尾插到新链表中最后返回新链表
3代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */typedefstructListNodeListNode;structListNode*removeElements(structListNode*head,intval){ListNode*newheadNULL;ListNode*newtailNULL;ListNode*pcurhead;while(pcur){if(pcur-val!val){if(newheadNULL)//链表为空newheadnewtailpcur;else{newtail-nextpcur;newtailpcur;}}pcurpcur-next;}if(newtail)newtail-nextNULL;returnnewhead;}
反转链表
1题目链接反转链表
2 算法原理注1n3会最先指向NULL所以要特判注2链表可能为空为空直接返回
3代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */typedefstructListNodeListNode;structListNode*reverseList(structListNode*head){//链表 为空if(headNULL)returnhead;ListNode*n1NULL;ListNode*n2head;ListNode*n3head-next;while(n
{n2-nextn1;n1n2;n2n3;if(n
n3n3-next;}returnn1;}
链表中间节点
1题目链接链表中间节点
2 算法原理核心思想快慢指针2*slow fast注意不能fast-next fast当遇到偶数链表会造成对空指针解应用
3代码/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */typedefstructListNodeListNode;structListNode*middleNode(structListNode*head){ListNode*slowhead;ListNode*fasthead;while(fastfast-next){slowslow-next;fastfast-next-next;}returnslow;}
总结与每日励志✨本文解析链表三大高频题型删除指定值节点、反转链表、查找中间节点。
通过新链表尾插法实现删除操作利用三指针法逐步反转链表采用快慢指针高效定位中间节点。
代码示例清晰附详细算法原理图解帮助掌握链表核心操作逻辑。
这些基础题型是提升指针运用能力和数据结构理解的关键建议结合图示反复练习。