java实现双向链表(数据结构双向链表)

/**
 * @version 1.0
 * function:
 * @author:阿卜杜赛麦提
 * @date:2023/1/5 2:04
 */
@SuppressWarnings({"all"})
public class LinkdList01 {
    public static void main(String[] args) {
        Node ali = new Node("阿里");
        Node asan = new Node("阿三");
        Node zhangsna = new Node("张二");
        Node hello = new Node("hello");
        Node jeck = new Node("jeck");
        //构建双向链表
        ali.next = asan;
        asan.next = zhangsna;
        zhangsna.next = hello;
        hello.next = jeck;
        jeck.previous = hello;
        hello.previous = zhangsna;
        zhangsna.previous = asan;
        asan.previous = ali;
        //构建头节点和尾节点
        Node headNode = ali;  //头节点指向ali
        Node tailNode = jeck; //尾节点指向jeck;
        //遍历输出
        System.out.println("=========双向链表正向遍历============");
        while (true){
            if (headNode==null){
                break;
            }
            System.out.println(headNode);
            headNode=headNode.next;
        }
        System.out.println("==============双向链表反向遍历===============");
        while (true){
            if (tailNode==null){
                break;
            }
            System.out.println(tailNode);
            tailNode=tailNode.previous;
        }
        //重置一下元素
         headNode = ali;  //头节点指向ali
         tailNode = jeck; //尾节点指向jeck;

        //添加元素
        Node lisi = new Node("李四");
        asan.next=lisi;
        lisi.next=zhangsna;
        zhangsna.previous=lisi;
        lisi.previous=asan;

        System.out.println("=========双向链表正向遍历============");
        while (true){
            if (headNode==null){
                break;
            }
            System.out.println(headNode);
            headNode=headNode.next;
        }
        System.out.println("==============双向链表反向遍历===============");
        while (true){
            if (tailNode==null){
                break;
            }
            System.out.println(tailNode);
            tailNode=tailNode.previous;
        }
    }

}
class Node {
    public Node next;       //下一个节点
    public Node previous;    //前一个结点
    public Object name;      //真正存放的数据

    public Node(Object name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "名称\t:" + name;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿卜杜赛麦提爱编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值