用JAVA实现一个单链表

105 阅读1分钟

通过Node节点传递

package MyLinkedList;

import java.util.LinkedList;

/**
 * @author Clive
 * @date 2020/9/11 0011 12:49
 */
public class MyLinkedList {

    Node first;
    Node last;
    int size;

    class Node{
        Node next;
        int value;
        public Node(int value) {
            this.value = value;
        }

        public Node getPrev() {
            return next;
        }

        public void setPrev(Node prev) {
            this.next = prev;
        }

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }
    }


    public void put(int a){
        Node node = new Node(a);
        if (last==null){
            first=node;
            last=node;
        }
        last.next=node;
        last=node;
        size++;
    }
    public int get(int idx){
        checkSize(idx);
        Node gongJuRen = first;
        if (idx==0){
            return first.value;
        }
        for (int i = 0; i < idx; i++) {
            gongJuRen=gongJuRen.next;
        }
        return gongJuRen.value;
    }

    public boolean checkSize(int idx){
        if (idx<=size){
            return true;
        }
        throw new IllegalArgumentException();
    }
    public void put(int value,int idx){
        Node node = new Node(value);
        Node aheadNode=first;
        Node backNode=null;
        checkSize(idx);
        if(idx==0){
            node.next=first;
            first=node;
        }
        else {
            for (int i = 0; i < idx - 1; i++) {
                aheadNode = aheadNode.next;
            }
            backNode = aheadNode.next;
            aheadNode.next = node;
            node.next = backNode;
        }
        size++;
    }


    public int getFirst() {
        return first.value;
    }

    public int getLast() {
        return last.value;
    }

    public int getSize(){
        return size;
    }

    @Override
    public String toString() {
        return "MyLinkedList{" +
                "first=" + first +
                ", last=" + last +
                ", size=" + size +
                '}';
    }

    public static void main(String[] args) {
        LinkedList<Object> objects = new LinkedList<>();
        MyLinkedList myLinkedList = new MyLinkedList();
        myLinkedList.put(1);
        myLinkedList.put(2);
        myLinkedList.put(3);
        myLinkedList.put(3);
        myLinkedList.put(5,3);
        for (int i = 0; i < myLinkedList.size; i++) {
            System.out.println("第"+i+"个的值为:"+myLinkedList.get(i));
        }
        System.out.println();
    }
}

没有使用泛型,有需要的可以自己copy一下自己玩一下。