数据结构(Java)之链表(5)-删除功能

有如下一个链表
在这里插入图片描述
删除索引为2位置的元素,也就是下图,元素2
在这里插入图片描述
还是同前几节一样的思路,要找到被删除节点的前一个节点,所以需要一个prev
在这里插入图片描述
找到2之前的元素,也就是1,prev指向元素1
在这里插入图片描述
此时要进行的操作就是将prev节点的next指向被删除节点的下一个节点
在这里插入图片描述
这里我们用delNode来表示被删除的节点,所以 prev.next = delNode.next
为了能够回收,要将,delNode对应的节点的next置为null

    //删除在链表中index(从0开始计)个位置的元素,返回删除的元素
    //在链表中不是一个常用的操作,练习使用
    public E remove(int index){
        if (index<0||index>=size){
            throw new IllegalArgumentException("index不合法");
        }
        //prev指向的是被删除节点的前一个节点
        Node prev = dummyHead;
        for (int i = 0; i < index; i++) {
            prev = prev.next;
        }
        Node delNode = prev.next;
        prev.next= delNode.next;
        delNode.next= null;
        size--;
        return delNode.e;
    }
    //从链表中删除第一个元素,返回删除的元素
    public E removeFirst(){
        return remove(0);
    }
    //从链表中删除最后一个元素,返回删除的元素
    public E removeLast(){
        return remove(size-1);
    }

测试代码:

public static void main(String[] args) {
        LinkedList<Integer> linkedList = new LinkedList<>();
        for (int i = 0; i < 5; i++) {
            linkedList.addFirst(i);
            System.out.println(linkedList);
        }
        linkedList.add(2,666);
        System.out.println(linkedList);

        linkedList.remove(2);
        System.out.println(linkedList);

        linkedList.removeFirst();
        System.out.println(linkedList);

        linkedList.removeLast();
        System.out.println(linkedList);
    }

结果展示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值