1、题目描述

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

说明:

  • 链表至少包含两个节点。
  • 链表中所有节点的值都是唯一的。
  • 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
  • 不要从你的函数中返回任何结果。

现有一个链表 -- head = [4,5,1,9],它可以表示为:

2、示例

输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

3、题解

基本思想:单链表基本操作。一开始看到这题是没有头节点,那么node节点删不了啊,所以想到把node节点后面所有的值前移一位,这样不就相当于node删除了,然后就想到了不用每个节点值向前移,只要把node后一个节点post值前移然后删除post节点即可。我真是一个小机灵鬼。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(NULL) {}
};
void Init_ListNode(ListNode* head, vector<int> vec)
{if (vec.size() == 0){head = NULL;return;}ListNode* p;p = head;p->val = vec[0];for (int i = 1; i < vec.size(); i++){ListNode* q = new ListNode(vec[i]);p->next = q;p = p->next;}
}
class Solution {
public:void deleteNode(ListNode* node) {//基本思想:单链表基本操作ListNode* post = node->next;node->val = post->val;node->next = post->next;delete(post);    //如果是new出来的需要delete,而题目的节点不知道是栈空间还是堆空间return;}
};
int main()
{Solution solute;ListNode* head = new ListNode(0);vector<int> vec = { 1,2,3,4,5 };Init_ListNode(head, vec);solute.deleteNode(head->next->next);while (head){cout << head->val << endl;head = head->next;}return 0;
}

237删除链表中的节点(单链表基本操作)相关推荐

  1. c语言删除链表中特定元素,单链表的删除某个元素的操作

    昨天我们谈了关于单链表的插入操作,今天我们就来看看与插入操作对应的删除操作. 前面了解了链表的插入,现在删除就简单了,因为是个反过程嘛.还是画个图容易理解一些. 单链表删除第i个数据结点的算法思路: ...

  2. 带头节点单链表的增删改查

    单链表有很多结构循环单链表,有头节点的单链表,无头节点的单链表,双节点单链表,以下源码是以有一个头节点的单链表为例写的增删改查的各种功能,就是下图 然后各个注释也在函数后面写着,这玩意确实还挺难,源码 ...

  3. 237. 删除链表中的节点【我亦无他唯手熟尔】

    237. 删除链表中的节点 请编写一个函数,用于 删除单链表中某个特定节点 .在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 . 题目数据保证需要删除的节点 不 ...

  4. 【解题报告】Leecode 237. 删除链表中的节点——Leecode每日一题系列

    今天是坚持每日一题打卡的第八天 题目链接:https://leetcode-cn.com/problems/minimum-operations-to-convert-number/ 题解汇总:htt ...

  5. 237. 删除链表中的节点(C语言)

    请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点.传入函数的唯一参数为 要被删除的节点 . 现有一个链表 – head = [4,5,1,9],它可以表示为: 示例 1: 输入:head = ...

  6. 237. 删除链表中的节点 golang

    删除链表的节点 https://leetcode-cn.com/problems/delete-node-in-a-linked-list 最优解 把下一个节点的值移动到当前删除节点,然后更改当前节点 ...

  7. LeetCode 237. 删除链表中的节点(Python3)

    题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: head ...

  8. LeetCode(237)——删除链表中的节点(JavaScript)

    请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 – head = [4,5,1,9],它可以表示为: 示例1: 输入: head = [4,5 ...

  9. 代码随想录Day04 | LeetCode24. 两两交换链表中的节点、LeetCode19. 删除链表的倒数第N个节点、LeetCode160. 链表相交、LeetCode142. 环形链表Ⅱ

    LeetCode24. 两两交换链表中的节点 力扣题目链接 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 ...

最新文章

  1. java 类定义_JAVA类与对象(二)----类定义基础
  2. Python 生成MYSQL inser语句
  3. NYOJ 372 巧克力
  4. rank()over 函数的使用
  5. 服务器部署多个tomcat方法
  6. linux 访问驱动器_Linux上的访问控制列表和外部驱动器:您需要了解的内容
  7. gson Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path
  8. Linux之find学习--详解
  9. 如果输入的dll名字被改后应该手工删除dll
  10. Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
  11. 游戏策划学习(一)游戏研发基础
  12. lbp2900打印机linux驱动下载,佳能LBP2900打印机驱动
  13. 计算机类普刊有哪些,计算机类普刊期刊发表推荐
  14. python实际应用2-拆分PDF
  15. 2023年【安徽省安全员C证】免费试题及安徽省安全员C证证考试
  16. Android super.img 镜像解包
  17. 一文搞懂Qt中的颜色渐变(QGradient Class)
  18. JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计
  19. LNA设计学习心得记录----MOS管的选取
  20. C语言/C++常见习题问答集锦之哆啦A梦

热门文章

  1. mysql如何限制数据修改密码_MySQL_MySQL数据库中修改密码及访问限制设置详解,MySQL是一个真正的多用户、多 - phpStudy...
  2. 【基于C语言的随机点名器】
  3. swapidc鸟云模板开源版
  4. web前端工程师需要掌握哪些知识
  5. 隧道工具——socat
  6. 并查集---找朋友圈个数问题,连通度问题,等的有效算法
  7. easyexcel 读取指定行数据_Excel怎么设置只提取指定行中的数据?
  8. 读王坚博士著作《在线》笔记(二)
  9. androidStudio gralde zip version 问题
  10. 安卓手机可以用python编程软件-有哪些可以在手机上敲Python代码的App