题目:
实现一个算法,删除单向链表中间的某个节点,假设你只能访问该节点
实例:
输入单向链表a-b-c-d-e中的节点c
结果,不返回任何数据,但该链表变为a-b-d-e
给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true
思路:复制后继,越过后继
代码:
package LianBiao;
/*
* 实现一个算法,删除单向链表中间的某个节点,假设你只能访问该节点
* 实例:
* 输入单向链表a-b-c-d-e中的节点c
* 结果,不反悔任何数据,但该链表变为a-b-d-e
*
* 给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true
*
* 思路:
* 因为拿不到头结点,不知道整个链表到底是什么样子,
* 所以我们采用复制后继节点,越过后继节点的方法,删除
*
* */
public class 删除单向链表中某个节点 {
public class Node{
Node next;
int value;
public Node(int value) {
this.value = value;
}
}
public boolean deleteNode(Node node){
if(node.next==null){
return false;
}
node.value=node.next.value; //复制后继节点
node.next=node.next.next; //越过后继节点
return true;
}
}