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=石原里美
精彩链接
发表评论