java头插法实现双向链表-尾插法

 

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);
    }

猜你喜欢

转载自blog.csdn.net/zhangmy12138/article/details/81209633