【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吗?

在单链表中删除倒数第k个节点(java实现)

实现方式很多,在这里只说两种实现方式。看不懂时候,大家可以画画图,对理解为什么很有帮助。 第一种方式: 1.首先判断K值和链表是否为空,如果k...
  • csdn_cwj
  • csdn_cwj
  • 2016年05月28日 11:15
  • 1421

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

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

坚持坚持!用Java写出删除一个链表的倒数第N个节点,并返回头节点(N总是可达的)

这个题目有个前提条件就是N总是可达的,所以直接省去了一种情况(N不可达时的情况) 思路: 数据结构里面首先给定两个指针p和q分别都指向这个链表的头节点,然后若想求出这个链表的倒数第N个节点,方法就...
  • yangmm2048
  • yangmm2048
  • 2015年04月06日 11:23
  • 812

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

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

删除单向链表中的某一个节点

已知一个单向链表的表头head,写出一个删除某一个节点的算法,要求先找到此节点,然后删除。 #include using namespace std; typedef struct node ...
  • huahuahailang
  • huahuahailang
  • 2013年04月05日 22:33
  • 44801

删除单链表中第i个节点

单链表的删除操作是将单链表的第i个节点删去。具体步骤如下: (1)找到节点ai-1的存储位置p,因为在单链表中节点ai的存储地址是在其直接前趋节点ai-1的指针域next中; (2)令p->nex...
  • cyuyanenen
  • cyuyanenen
  • 2016年05月10日 20:10
  • 6478

剑指Offer面试题13(java版):在O(1)时间删除链表节点

题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。 在单向链表中删除一个节点,最常规的方法无疑是从链表的头结点开始,顺序遍历查找要删除的节点,并在链表中删除该节点。 ...
  • jsqfengbao
  • jsqfengbao
  • 2015年07月31日 20:55
  • 2171

单链表操作之删除倒数第k个结点

****单链表操作之删除倒数第k个结点**** //函数功能:删除链表的倒数第k个结点;1 //自定义的结点结构体和头指针结构体: //函数原型:void DelKNode(pLin...
  • bitboss
  • bitboss
  • 2016年06月10日 18:28
  • 1629

删除单链表中的重复节点(删除多余项)

题目:如何删除单链表中的重复节点(即保证每个元素只出现一次,删除多余的,且后来出现的元素)。 一个没有排序的单链表,如 list = {a, 1, x, b, e, f, f, e, a, g, h...
  • cyuyanenen
  • cyuyanenen
  • 2016年06月20日 13:46
  • 9406

C语言实现单链表节点的删除(带头结点)

我在之前一篇博客《C语言实现单链表节点的删除(不带头结点)》中详细实现了如何在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表。代码示例上传至 https://github...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2016年03月01日 16:09
  • 3477
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】实现一个算法,删除单链表中间的某个结点,假定你只能访问该结点
举报原因:
原因补充:

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