java实现双向链表

来源:互联网 发布:python java socket 编辑:程序博客网 时间:2024/05/16 01:56

利用java实现 带有头节点 尾节点的双向链表,以及基本的方法实现

/** * Created by pandap on 2017/8/4. * 双向链表的java实现 */public class MyList<T> {    /*    内部节点类     */    private class Node<T>{        public Node<T> pre;        public Node<T> next;        public T data;        public Node(){            this.data = null;            this.next = null;            this.pre = null;        }        public Node(T data,Node pre, Node next){            this.data = data;            this.pre = pre;            this.next = next;        }    }    //链表的属性 大小 头节点 尾节点    private int size;    private Node<T> header;    private Node<T> tail;    //初始化链表    public MyList(){        this.size = 0;        header = new Node<T>(null,null,null);        tail = new Node<T>(null,header,null);        header.next = tail;        if(header == null){            System.out.println("header is null");        }        if(tail == null){            System.out.println("tail isi null");        }    }//添加元素    public void add(T item){        Node<T> newNode = new Node(item,null,null);        tail.pre.next = newNode;        newNode.pre = tail.pre;        newNode.next = tail;        tail.pre = newNode;        size++;    }//判空    public boolean isEmpty(){        return size == 0;    }    public int size(){        return size;    }//获取某个节点    public T get(int idx){        if(idx >= size || idx < 0){            throw new IndexOutOfBoundsException();        }        Node current = header;        for(int i=0; i<=idx; i++){            current = current.next;        }        return (T)current.data;    }//输出链表    public void print(){        Node<T> current = header.next;        while(current.next != null){            System.out.println(current.data.toString());            current = current.next;        }    }//    测试    public static void main(String[] args) {        MyList<String> strs = new MyList<String>();        strs.add("first");        strs.add("second");        strs.add("three");        System.out.println("size :" + strs.size);        strs.print();        System.out.println(strs.get(0));    }}
测试结果

原创粉丝点击