package 双向循环链表;
public class DoubleNode {
public static void main(String[] args) {
//创建节点
DoubleNode dn1=new DoubleNode(20);
DoubleNode dn2=new DoubleNode(30);
DoubleNode dn3=new DoubleNode(40);
//构建双链表
dn1.after(dn2);
dn2.after(dn3);
//检验dn2的前驱
System.out.println("dn2的前驱"+dn2.pre.date);
//检验dn2的后继
System.out.println("dn2的后继"+dn2.next.date);
//检验d1的后继
System.out.println("d1的后继"+dn1.next.date);
//d3的前驱
System.out.println("d3的前驱"+dn3.pre.date);
System.out.println(dn3.next.date);
}
//上一个节点(如果只创建一个节点那么他的上一个节点和下一个节点都是他自己)
DoubleNode pre=this;
//下一个节点
DoubleNode next=this;
//记录节点的数据
int date;
public DoubleNode(int date)
{
this.date=date;
}
//如何增加节点(实际就是3个节点4条链)
public void after(DoubleNode node)
{
//原来的下一个节点作为下下一个节点
DoubleNode nextNext=next;
//把新节点作为当前节点的下一个节点
this.next=node;
//把当前节点作为新节点的前一个节点
node.pre=this;
//让原来的下一个节点作为新节点的下一个节点
node.next=nextNext;
//让原来的下一个节点的上一个节点为新节点
nextNext.pre=node;
}
//下一个节点
public DoubleNode next()
{
return this.next;
}
//获取上一个节点
public DoubleNode pre()
{
return this.pre;
}
//获取数据
public int getDate()
{
return this.date;
}
}