【Java】实现一个算法,删除单链表中间的某个结点,假定你只能访问该结点

原创 2015年07月08日 17:02:22

直接free(p),这样行不通,因为我们不能访问其他结点;

如果我们只能访问该结点,可以尝试将该结点的后继结点的数据复制到当前结点,然后删除后继结点

public static boolean deleteNode (LinkListNode n) {
	if( null == n || null == n.next ) return false;
	LinkListNode next = n.next;
	n.data = next.data;
	n.next = next.next;
	return true;
}

但是这样做有一个问题,如果我们要删除的是尾结点,这个算法就失效了,如果是尾结点,可以考虑将这个结点置为fake吗?

相关文章推荐

删除单链表某个结点(Java版)

题目:删除带头结点的单链表L中的结点p,p不是最后一个结点,要求时间复杂度为O(1)。 解题思路: 如果不要求时间复杂度为O(1),我们可以找出p的前驱结点,然后很容易就删除p。 现在要求时...

【LeetCode-面试算法经典-Java实现】【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】

【083-Remove Duplicates from Sorted List(排序的单链表中删除重复的结点)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given ...

带头结点的单链表的c算法实现

  • 2008年11月02日 19:41
  • 204KB
  • 下载

【LeetCode-面试算法经典-Java实现】【024-Swap Nodes in Pairs(成对交换单链表的结点)】

【024-Swap Nodes in Pairs(成对交换单链表的结点)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a linked list, swap...

cc150:实现一个算法来删除单链表中间的一个结点,只给出指向那个结点的指针

实现一个算法来删除单链表中间的一个结点,只给出指向那个结点的指针。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】实现一个算法,删除单链表中间的某个结点,假定你只能访问该结点
举报原因:
原因补充:

(最多只允许输入30个字)