链表问题之无头单链表删节点<Java实现>

/**
 * 从无头单链表中删除一个既不是头结点,也不是尾节点节点
 * @author Sking
 */
package 链表问题;

public class 无头单链表删节点 {
	/**
	 * 链表节点类
	 * @author Sking
	 */
	protected class ChainNode {
		public Object element;
		public ChainNode next;
		public ChainNode(Object element, ChainNode next) {
			this.element = element;
			this.next = next;
		}
	}
	
	/**
	 * 从无头单链表中删除节点问题:
	 * 假设有一个没有头指针的单链表,一个指针指向此单链表的中间一
	 * 个节点(不是第一个也不是最后一个),将此节点从此链表中删除。
	 * 
	 * 假设链表如下...A->B->C->D..(D可能为空),现在要删除节点B.
	 * 由于将B节点删除后,将分割链表(无法通过指针追溯到A),所以
	 * 换个角度:将C的数据域赋值给B的数据域,然后删除C(狸猫换太子)
	 * @param current 待删除的节点
	 */
	public static void DeleteRandomNode(ChainNode current){
		ChainNode pnext=current.next;
		if(pnext!=null){
			current.next=pnext.next;
			current.element=pnext.element;
			pnext=null;
		}
	}	
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值