[算法]单链表在不知道头指针的情况下删除指定结点

如何在不知道头指针的情况下删除指定结点

解题思路:

分情况讨论,如果待删除的结点为链表尾结点,则无法删除,因为删除后无法使其前驱结点的next指针置为空。
若待删除的结点不是尾结点,则可以通过交换这个结点与其后继结点的值,然后删除后继结点。

实现代码如下:

public class Solution {

    public boolean deleteNode(Node n){
        if(n == null || n.next == null){
            return false;
        }
        int tmp = n.data;
        n.data = n.next.data;
        n.next.data = tmp;
        n.next = n.next.next;
        return true;
    }
}

Github源码如下:

https://github.com/GeniusVJR/Algorithm-and-Data-Structure/tree/master/在不知道头指针的情况下删除指定结点

你可能感兴趣的:(算法)