結合下面的代碼看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; } }
LinkListnode
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(); } }