栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构之手写单链表(通过Node节点实现)(Java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构之手写单链表(通过Node节点实现)(Java)

public class LinkedList {
    // 节点数量
    private int size;
    // 头节点
    private Node head;

    
    public void add(E element) {
        add(size, element);
    }

    
    public void add(int index, E element) {
        if (index == 0) {
            head = new Node<>(element, head);
        } else {
            Node prev = node(index - 1);
            prev.next = new Node<>(element, prev.next);
        }
        size ++;
    }

    
    public E remove(int index) {
        Node node = head;
        if (index == 0) {
            head = head.next;
        } else {
            Node prev = node(index - 1);
            node = prev.next;
            prev.next = prev.next.next;
        }
        size --;
        return node.element;
    }

    
    public E set(int index, E element) {
        Node node = node(index);
        E oldElement = (E) node.element;
        node.element = element;
        return oldElement;
    }

    
    public E get(int index) {
        return node(index).element;
    }

    
    public int indexOf(E element) {
        Node node = head;
        if (element == null) {
            for (int i = 0; i < size; i ++) {
                if (node.element == null) return i;
                node = node.next;
            }
        } else {
            for (int i = 0; i < size; i ++) {
                if (node.element.equals(element)) return i;
                node = node.next;
            }
        }
        return -1;
    }

    
    public void clear() {
        size = 0;
        head = null;
    }

    
    public Node node(int index) {
        rangeCheck(index);

        Node node = head;
        for (int i = 0; i < index; i ++ ) {
            node = node.next;
        }
        return node;
    }

    
    private void rangeCheck(int index) {
        if (index < 0 || index >= size) {
            throw new IndexOutOfBoundsException("Index:" + index + ", Size:" + size);
        }
    }

    public int size() {
        return size;
    }

    public boolean isEmpty() {
        return size == 0;
    }

    
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("size = ").append(size).append(", [");
        Node node = head;
        for (int i = 0; i < size; i ++) {
            if (i != 0) {
                sb.append(", ");
            }
            sb.append(node.element);
            node = node.next;
        }

        sb.append("]");

        return sb.toString();
    }

    
    private static class Node {
        E element;
        Node next;

        public Node(E element, Node next) {
            this.element = element;
            this.next = next;
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020448.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号