阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第30章:链表的定义与使用:课时142:链表(数据删除)

数据删除:public void remove(E data)

数据的删除指的是可以从集合里面删除掉指定的一个数据内容,也就是说此时传递的是数据内容,那么如果要实现这种删除操作依然需要对象比较的支持,但是对于集合数据的删除需要考虑两种情况:
1.要删除的是根节点数据(LinkImpl与根节点有关,所以这个判断由根节点完成):
在这里插入图片描述

2.要删除的不是根节点数据(由Node类负责):
在这里插入图片描述
1.在ILink接口里面追加新的删除方法

	public void remove(E e) ; // 数据删除

2.在LinkImpl子类里面实现根节点的判断

	public void remove(E data) {
		if (this.contains(data)) { // 判断数据是否存在
			if (this.root.data.equals(data)) { // 根节点为要删除节点
				this.root = this.root.next ; // 根的下一个节点
			}
			this.count -- ;
		}
	}

3.如果现在根节点并不是要删除的节点,那么就需要进行后续节点判断,但是请一定要记住,此时根节点已经判断完成了,再判断应该从根节点的下一个开始判断,在Node类中追加删除处理。

		public void removeNode(Node previous,E data) {
			if (this.data.equals(data)) {
				previous.next = this.next ; // 空出当前节点
			} else {
				if (this.next != null) { // 有后续节点
					this.next.removeNode(this,data) ;  // 向后继续删除
				}
			}
		}

4.完善LinkImpl子类中的remove()方法。

	public void remove(E data) {
		if (this.contains(data)) { // 判断数据是否存在
			if (this.root.data.equals(data)) { // 根节点为要删除节点
				this.root = this.root.next ; // 根的下一个节点
			} else { // 交由Node类负责删除
				this.root.next.removeNode(this.root,data);
			}
			this.count -- ;
		}
	}

删除逻辑就是引用的改变完成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值