leetcode腾讯精选练习之删除链表中的结点

Posted 一蓑烟雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode腾讯精选练习之删除链表中的结点相关的知识,希望对你有一定的参考价值。

删除链表中的结点

题目:

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
现有一个链表 -- head = [4,5,1,9],它可以表示为:
示例 1:
输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
示例 2:
输入: head = [4,5,1,9], node = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

思路:

1.将当前结点的下一个结点的值赋值给当前结点。
2.将下一个结点赋值给临时指针
3.将当前结点的下一个结点的下一个结点赋值给当前结点的下一个结点
4.删除当前结点的下一个结点

代码:

void deleteNode(ListNode* node) {
    node->val = node->next->val;
    ListNode* temp = node->next;
    node->next = node->next->next;
    delete temp;
}

总结:

基本的链表删除结点操作

以上是关于leetcode腾讯精选练习之删除链表中的结点的主要内容,如果未能解决你的问题,请参考以下文章

leetcode腾讯精选练习之旋转链表

leetcode腾讯精选练习之最长公共前缀

线性表练习之Example011-分解链表中的奇数节点和偶数节点

leetcode腾讯精选练习之除自身以外数组的乘积

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:环形链表

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:环形链表 II