美文网首页
数据结构----LinkedList链表

数据结构----LinkedList链表

作者: pgydbh | 来源:发表于2018-08-21 14:00 被阅读11次

    结构

    链表,双向,加速查询。
    需要size()----大小
    需要put(i)----放入
    需要get(i)----取出

    代码

    public class LinkedList<T> {
    
        private int size;
        private Node head;
        private Node end;
        private Node poi;
        public LinkedList(){
            head = new Node<>();
            end = new Node<>();
            head.next = end;
            end.prev = head;
        }
    
        public int size(){
            return size;
        }
    
        public void put(T t){
            if (poi == null){
                poi = new Node<>();
                head.next = poi;
                end.prev = poi;
            } else {
                Node node = new Node();
                poi.next = node;
                node.prev = poi;
                node.next = end;
                end.prev = node;
                poi = node;
            }
            poi.t = t;
            size++;
        }
    
        public T get(int i){
            if (i >= 0 && i < size){
                if (i < size >> 1){
                    Node temp = head;
                    for (int j = 0; j < i; j++){
                        temp = temp.next;
                    }
                    return (T) temp.next.t;
                } else {
                    Node temp = end;
                    for (int j = 1; j < size - i; j++){
                        temp = temp.prev;
                    }
                    return (T) temp.prev.t;
                }
            } else {
                return null;
            }
        }
    
        public static class Node<T>{
            public T t;
            public Node<T> prev;
            public Node<T> next;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:数据结构----LinkedList链表

          本文链接:https://www.haomeiwen.com/subject/elzdiftx.html