删除单链表中一个元素,代码如下,为什么不用检查node->next 是否为空??

writeeee 2017-04-05 06:13:38

class Solution {
public:
void deleteNode(ListNode* node) {
auto next = node->next;
*node = *next;
delete next;
}
};
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜鸟的挣扎 2017-04-06
  • 打赏
  • 举报
回复
要判断吧?是否在外面已经有判断条件了?或者处理过程不存在为空的条件
paschen 版主 2017-04-06
  • 打赏
  • 举报
回复
可以delete一个空指针,但*next如果next为空将会出错 如果没有判断,如果不是代码问题,那应该是知道next肯定不为空
欧阳春晖 2017-04-06
  • 打赏
  • 举报
回复
引用 2 楼 cutmelon 的回复:
delete空是允许的行为,没有任何效果,自己写个代码试试就知道了
void main()
{
	void* p=nullptr;
	delete p;
}
正解
cutmelon 2017-04-06
  • 打赏
  • 举报
回复
引用 3 楼 writeeee 的回复:
但是leetcode 上没有判断,然后就可以通过 node->next; 为null 了 ,*next 不会出错吗
如果是基本类型的话当然会出错,这里我觉得你应该看看ListNode有没有重载=操作符,估计里头判断
writeeee 2017-04-06
  • 打赏
  • 举报
回复
但是leetcode 上没有判断,然后就可以通过 node->next; 为null 了 ,*next 不会出错吗
cutmelon 2017-04-06
  • 打赏
  • 举报
回复
delete空是允许的行为,没有任何效果,自己写个代码试试就知道了
void main()
{
	void* p=nullptr;
	delete p;
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧