LeetCode203 删除单链表中值等于val的结点
来源:互联网 发布:淘宝店是怎么打广告的 编辑:程序博客网 时间:2024/06/06 03:41
题解:首先找到单链表中第一个值为非val的结点,作为新的头结点,然后再从这个结点开始,找下一个值为非val的结点作为新的头结点的下一个结点,如此依次进行。
代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeElements(ListNode* head, int val) { //大于等于两个结点 ListNode* p = head; ListNode* pe; //找到第一个值不为val的结点 while (p&&p->val == val) { pe = p->next; p->next = NULL; p = pe; } if (!p){ return NULL; } ListNode* head2 = p; ListNode* pre; while (p){ pre = p->next; while (pre&&pre->val == val){ pre = pre->next; } p->next = pre; p = pre; } return head2; }};第二种思路就是定义一个带头节点的链表,然后
struct ListNode fakehead, *current;fakehead.next = head;current = &fakehead;while (current->next != NULL) { if (current->next->val == val) { struct ListNode *del_node = current->next; current->next = current->next->next; free(del_node); } else { current = current->next; }}return fakehead.next;}
0 0
- LeetCode203 删除单链表中值等于val的结点
- C++删除单链表中值重复的结点
- 2.1删除不带头结点的单链表L中值为x的结点
- C++ 删除单链表中值重复的结点_类似选择排序的解法
- 删除两个双向链表中值相同的结点--无空白头结点
- 删除两个双向链表中值相同的结点--带空白头结点
- 单链表的结点删除
- WV.7-动态链表-删除链表中值为x的结点
- 203.Remove Linked List Elements(删除链表中值为X的结点)
- 删除链表中值为x的元素结点(java语言)
- 没有头结点的单链表如何删除结点
- 删除单链表(带头结点)的最小值结点
- 不带头结点的单链表的删除
- 删除结点的操作(单链表)
- 删除单链表中间的某个结点
- 删除链表中重复的结点(单链表)
- 删除相同的结点
- 二叉排序树的结点删除
- redis 集群安装配置
- 单件模式基类
- 手机卫士笔记
- 关于Ubuntu装andriod studio(使用genymotion模拟器)
- Android Touch 事件传递机制
- LeetCode203 删除单链表中值等于val的结点
- React Native 之 main.jsbundle生成方法
- 我的蓝桥杯历届初赛试题总结
- 【BZOJ1833】【ZJOI2010】count 数字统计
- android如何让service不被杀死
- junit测试延伸--方法的重复测试
- 《有趣的二进制》学习笔记(持续更新)
- 解决vim中鼠标右键无法复制的问题
- python小爬虫