Java实现双向链表结构

LinkList是链表,如果我们要实现前后两个Node有关联能相互追溯,或者要实现一个循环♻️链表,可以按照自己思路实现。
(1)仿照LinkList,创建一个链表类,包含前节点,数据,后节点。
static class ListNode{
        //当前节点数据
        private Integer data;
        //后节点
        private ListNode next;
        //前节点
        private ListNode previous;

        public Integer getData() {
            return data;
        }

        public void setData(Integer data) {
            this.data = data;
        }

        public ListNode getNext() {
            return next;
        }

        public void setNext(ListNode next) {
            this.next = next;
        }

        public ListNode getPrevious() {
            return previous;
        }

        public void setPrevious(ListNode previous) {
            this.previous = previous;
        }
    }
(2)定义好结构后,我们就要往里面放数据,根据我们的常识,头节点肯定是没有前节点的,但是一定有后一个节点,同时后一个节点又会成为新一轮的头节点,同时设置自己的值并且继续创建后一个节点,直到尾节点,尾节点没有后一个节点,它自己就是最尾了~~
那么清晰的结构,那么肯定就是,递归~定义填充数据的方法,我这里写死从0填充到9,一共十个数据供我测试用。
private static void fullListNode(ListNode headListNode, ListNode preNode, int value) {
        if (value >=10){
            return;
        }
        int i = value;
        headListNode.setPrevious(preNode);
        headListNode.setData(i);
        ListNode tempListNode = new ListNode();
        headListNode.setNext(tempListNode);
        i++;
        fullListNode(headListNode.getNext(), headListNode, i);
    }
然后就是Main方法:
public static void main(String[] args) {
        // 创建链表头
        ListNode headListNode = new ListNode();
        // 链表头的头节点是null(自己就是最前面一个)
        fullListNode(headListNode, null,0);
        // 遍历一遍
        outAllListNode(headListNode);
    }
(3)遍历也是使用递归即可~不停判断是否还有下一个节点~
private static void outAllListNode(ListNode headListNode) {
        if (headListNode.getNext()!=null){
            System.out.println("当前节点:"+headListNode.getData()+";下一个节点的值:"+headListNode.getNext().getData());
            outAllListNode(headListNode.getNext());
        } else {
            System.out.println("遍历完成!");
        }
    }

结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值