class DLink{
String data;
DLink prev,next;//prev存储前一个节点地址;next存储后一个节点的地址
/**
* 创建一个双向链表,返回头地址
* @param len 传输向节点传输数据长度
* @return 返回头地址
*/
public DLink create(int len){
//header存储头节点地址,tailer存储尾部节点地址,temp存储临时节点地址
DLink header,tailer,temp;
header=tailer=null;//初始化
Scanner sc=new Scanner(System.in);
//根据用户传递len的长度
for (int i = 0; i <len ; i++) {
//创建节点
temp=new DLink();
//获取用户传送的数据
System.out.println("请输入数据:");
String in=sc.next();
//为节点数据赋值
temp.data=in;
//判断当前节点是否为第一次创建
if(header==null){
header=tailer=temp;
}else{
//新节点与双向链表产生关联
//通过temp新节点的prev属性获取原链表最后一个节点的地址
temp.prev=tailer;
//将原链表的最后一个节点的next 存储新节点temp的地址
tailer.next=temp;
//上两步相当于将新节点连入到链表中
// tailer始终存储最后一个节点的地址
tailer=temp;
}
}
return header;
}
}//BAT
public class DoubleLinkDemo {
public static void main(String[] args) {
DLink link=new DLink();
DLink header=link.create(6);
//遍历双向链表
for(int i = 0;i<4;i++){
System.out.println(header.data);
//获取下一个元素
header=header.next;
}
System.out.println("=======================");
System.out.println(header.prev.data);
}