1.2 单链表SingleLinkedList实现

这篇博客介绍了如何在Java中创建一个单链表节点,并详细讲解了如何根据节点值和索引进行删除操作。文章通过实例代码演示了toString方法的重写以及在删除节点时遇到的问题和解决方案,提供了完整的链表操作代码。
摘要由CSDN通过智能技术生成

新建一个节点,把element传进去

new ListNode(element);

它成为一个新的节点,这样子它就具备数据,但是next为空

(next现在是空指针,没有指向任何东西)

@Override
public void add(Object element) {
	if(first==null) {
		first=new ListNode(element);
		last=first;
	}else {
		last.next=new ListNode(element);
		//此时的last不再是上一次的last,last应该指向最后这个新增的这个
		last=last.next;
        //一种更替,修改last指针位置,指向原来的下一个节点(自己是倒数第二了,指针要后移一个,让last明正言顺)
	}		
}

接下来重写一下toString方法:

【有缺陷写法】
while(p.data!=null) {
	sb.append(p.data).append(",");
	p=p.next;
}

这个while是有问题的,否则最后一个元素打不出来
当前情况下p已经是最后一个元素了,等于p.next ,它自己就为空了
所以while就退出了
【正确写法】
@Override
public String toString() {
	StringBuilder sb=new StringBuilder("[");
	ListNode p=first;
	while(p!=null) {//一个经典的写法
		sb.append(p.data).append(",");//把p和first先复制一份,看看它有没有next,如果没有next,就不往下移动了
		p=p.next;//有的话:p=p.next 逐步往后移  p已经是最后一个元素了
	}
	sb.append("]");
	return sb.toString();
}

【此时熟悉一下新建的测试方法】
@Test
public void testAdd() {
    //添加balabala
}

@Test
public void testAdd() {
	SingleLinkedList list=new SingleLinkedList();
	list.add("a");
	list.add("b");
	list.add("c");
	list.add("d");
	list.add("e");
	System.out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值