Java模拟一个简单的双向链表

1.链表结构

Node实体类代码:

public class Node {

public Object item;//存放数据的地方

public Node next;//指向下一个结点

public Node pre;//指向上一个结点

public Node(Object obj) {

this.item = obj;

}

public String toString() {

return "Node name=" + item;

}

}

2.测试类

package com.swift.collection.list;

import com.swift.pojo.Node;

/**

* @Author swift

* @Date 2022/8/15 15:27

* @PackageName:com.swift.collection.list

* @ClassName: LinkedList01

* @Description: TODO

* @Version 1.0

*/

public class LinkedList01 {

public static void main(String[] args) {

//创建三个结点

Node node1 = new Node("石原里美");

Node node2 = new Node("仓木麻衣");

Node node3 = new Node("新垣结衣");

//连接结点

/*node1->node2->node3*/

node1.next = node2;

node2.next = node3;

/*node3->node2->node1*/

node3.pre = node2;

node2.pre = node1;

Node firstNode = node1;//双向链表的头结点 firstNode引用指向node1

Node lastNode = node3;//双向链表的尾结点 lastNode引用指向node3

System.out.println("====初始链表从头到尾遍历====");

//从头到尾遍历

while (true) {

if (firstNode == null) {

break;

}

System.out.println(firstNode);

firstNode = firstNode.next;

}

//从尾到头遍历

System.out.println("====初始链表从尾到头遍历====");

while (true) {

if (lastNode == null) {

break;

}

System.out.println(lastNode);

lastNode = lastNode.pre;

}

//双向链表添加数据/对象,eg:在仓木麻衣和新垣结衣中间添加一个坂井泉水

Node insertNode = new Node("坂井泉水");

/*将坂井泉水加入到链表*/

insertNode.pre=node2;

insertNode.next=node3;

node2.next=insertNode;

node3.pre=insertNode;

System.out.println("--在仓木麻衣和新垣结衣中间添加一个坂井泉水从头到尾遍历--");

//从头到尾遍历

firstNode=node1;//first再次指向node1

while (true) {

if (firstNode == null) {

break;

}

System.out.println(firstNode);

firstNode = firstNode.next;

}

System.out.println("--在仓木麻衣和新垣结衣中间添加一个坂井泉水从尾到头遍历--");

//从尾到头遍历

lastNode=node3;//last再次指向node3

while (true) {

if (lastNode == null) {

break;

}

System.out.println(lastNode);

lastNode = lastNode.pre;

}

}

}

3.图解

4.测试结果

====初始链表从头到尾遍历====

Node name=石原里美

Node name=仓木麻衣

Node name=新垣结衣

====初始链表从尾到头遍历====

Node name=新垣结衣

Node name=仓木麻衣

Node name=石原里美

--在仓木麻衣和新垣结衣中间添加一个坂井泉水从头到尾遍历--

Node name=石原里美

Node name=仓木麻衣

Node name=坂井泉水

Node name=新垣结衣

--在仓木麻衣和新垣结衣中间添加一个坂井泉水从尾到头遍历--

Node name=新垣结衣

Node name=坂井泉水

Node name=仓木麻衣

Node name=石原里美

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。