LeetCode203题移除链表元素C++解法(适合基础薄弱)
2023-09-27 14:19:56 时间
给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例2:
输入:head = [], val = 1
输出:[]
示例3:
输入:head = [7,7,7,7], val = 7
输出:[]
解法
设置一个临时结点temp,再 pre指向temp,temp的后继为head
注意:想要实现这个操作有俩种实现方法·
1
ListNode* temp = new ListNode (0,head); /*设置一个新结点,这个结点值为0,temp->next=head */
ListNode* ptr = temp; //设置一个指针指向temp
2
ListNode temp;
ListNode *pre = &temp;
如果采用方法2,temp的后序操作需要用到 " . " ,比如temp.next ,temp.val;
代码如下
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode temp;
ListNode *pre = &temp;
temp.next = head;
while(pre->next){ //只有pre->next不为空才能进行操作
if(pre->next->val == val) //pre的下一个结点的值不为val的值
pre->next= pre->next->next; //是的话跳过这个结点
else{
pre = pre->next; //否则pre往前走
}
}
return temp.next; //因为temp这个结点后继才为head,所以返回temp.next;
}
};
相关文章
- [C++功能函数] 判断文件&目录是否存在
- C++ 链表
- C++模板之typename和class关键字的区别
- 编程算法 - 二叉搜索树 与 双向链表 代码(C++)
- 74 C++ - vector容器
- C++11中的noexcept说明符和操作符
- 《C和C++代码精粹》——2.7 指针和一维数组
- ZOJ1001 A + B Problem(C++实现,通过字符串操作实现大整数加减运算)
- [第四届蓝桥杯省赛C++B组]翻硬币
- kafka的c/c++高性能客户端librdkafka简介
- 42、【链表】静态单链表(C/C++版)
- 【C++快速上手】十五、域作用符 ::
- C++学习笔记26,虚函数
- C++游戏研发-广州(40-60万)
- C++基础 球的体积