数据结构----LinkedList链表

2018-08-21  本文已影响11人  pgydbh

结构

链表,双向,加速查询。
需要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;
    }
}

上一篇 下一篇

猜你喜欢

热点阅读