java單鏈表 原

結合下面的代碼看

class Node {
    private Node next;//存放結點的變量
    private int data;//存放數據的變量

    public Node(int data) {
        this.data = data;
    }

    public Node getNext() {
        return next;
    }

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

    public int getData() {
        return data;
    }

    public void setData(int data) {
        this.data = data;
    }
}

LinkList

class LinkList {
    private Node first;
    private int size = 0;// 節點的位置

    public void addFirst(int data) {
        Node node = new Node(data);
        node.setNext(first);
        first = node;
        size++;
    }

    public void add(int index, int data) {
        //判斷index是否符合條件
        if (index < 0) {
            throw new IllegalArgumentException("非法參數:" + index);
        }
        if (index > size()) {
            throw new IndexOutOfBoundsException();
        }
        if (index == 0) {
            addFirst(data);
            size++;
            return;
        }
        Node temp = first;
        int length = 0;
        //獲取指定索引上的Node,將上一個Node的next記錄下來,更改上一個Node的next
        while (temp.getNext() != null) {
            if (index - 1 == length) {
                Node node = new Node(data);
                Node tempNode = temp.getNext();
                temp.setNext(node);
                node.setNext(tempNode);
                size++;
                return;
            }
            length++;
            temp = temp.getNext();
        }
    }

    public int size() {
        /*int length = 0;
        if (first != null) {
            length++;
        } else {
            return length;
        }
        Node node = first;
        while (node.getNext() != null) {
            length++;
            node = node.getNext();
        }
        return length;*/
        return size;
    }

    public Object get(int index) {
        //判斷index是否符合條件
        if (index < 0) {
            throw new IllegalArgumentException("非法參數:" + index);
        }
        if (index > size()) {
            throw new IndexOutOfBoundsException();
        }
        Node temp = first;
        //獲取指定索引上的Node,將上一個Node的next記錄下來,更改上一個Node的next
        for (int i = 0; i < index; i++) {
            temp = temp.getNext();
        }
        return temp.getData();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章