博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
阅读量:5135 次
发布时间:2019-06-13

本文共 1179 字,大约阅读时间需要 3 分钟。

问题描述

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.Subscribe to see which companies asked this question
我们需要这样一个函数:从一个单链表中删除指定元素(不能是尾部),这个函数的参数只有这个被删除的节点。假设这个单链表为 1 -> 2 -> 3 -> 4 。然后你传入的参数节点为第三个,值为3的那个,执行了这个函数之后,这个链表将变为 1 -> 2 -> 41 -> 2 -> 3 -> 4cur next我得到3这个节点作为参数的时候,把这个节点的指针命名为cur,然后也可以得到4这个节点,把这个节点的指针命名为next,这个时候,我也可以把3这个节点的值改为4,这时链表变为1 -> 2 -> 4 -> 4cur next这时,接着把cur当前的next指针直接指向next的next指针。也就是说之间删掉next的这个节点即可。这样对于这个链表就变为1 -> 2 -> 4结束了!其实简单来说就是把传入节点的后面一个节点的值赋给自己,然后把自己后面的节点删掉即可。当然也要注意一下异常检查,代码非常非常简单,这道题也非常非常基础,更是一种思维能力上的考验其实,而我是使用 Java 来写的,所以可以先不用考虑节点的“删除”问题。

java代码实现

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {
public void deleteNode(ListNode node) {if(node==null||node.next==null) return;ListNode temp = node.next;node.val = temp.val;node.next = temp.next;}}

转载于:https://www.cnblogs.com/fengsehng/p/6048519.html

你可能感兴趣的文章
74HC164应用
查看>>
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>
Python2.7 urlparse
查看>>
sencha touch在华为emotion ui 2.0自带浏览器中圆角溢出的bug
查看>>
【架构】Linux的架构(architecture)
查看>>
ASM 图解
查看>>
Date Picker控件:
查看>>
你的第一个Django程序
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
nginx 不带www到www域名的重定向
查看>>
记录:Android中StackOverflow的问题
查看>>
导航,头部,CSS基础
查看>>
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>