public class MyLinkedList { static class ListNode { int val; ListNode next; public ListNode(int val){ this.val = val; } } ListNode head;// 頭結點 ListNode tail;// 尾結點 int size; public MyLinkedList(){ head = null; tail = null; size = 0; } // 插入方法 public void insert(int position, int number){ if(position > size){ return; } ListNode newNode = new ListNode(number); // 要插入的位置是0(即爲頭部) // case 1 : 頭部插入 if(position == 0){ newNode.next = head; head = newNode; // 判斷尾結點是否是null, 若是是null說明這是插入的第一個元素 if(tail == null){ tail = newNode; } size++; } // case 2 : 尾部插入 else if(position == size){ this.append(number); } // case 3 : 中間插入 else { // 找到插入位置以前的節點 ListNode prev = head; for (int i = 0; i < position - 1; i++) { prev = prev.next; } ListNode next = prev.next; newNode.next = next; prev.next = newNode; size++; } } public void append(int number){ ListNode newNode = new ListNode(number); if(tail == null){ tail = newNode; } else { tail.next = newNode; tail = newNode; } size++; } // 刪除 public void delete(int number){ // 刪除頭結點 if(head != null && head.val == number){ head = head.next; size--; // 若是size==0 說明只有一個元素 if(size == 0) { tail = head; } } else { ListNode prev = head; ListNode current = head; while(prev != null && current != null){ if(current.val == number){ if(current == tail){ tail = prev; } prev.next = current.next; size--; return; } prev = current; current = current.next; } } } // 查找 返回位置 public int search(int number){ ListNode current = head; for (int i = 0; current != null; i++) { if(current.val == number){ return i; } current = current.next; } return -1; } // 修改 public int update(int oldValue, int newValue){ ListNode current = head; for (int i = 0; current != null; i++) { if(current.val == oldValue){ current.val = newValue; return i; } current = current.next; } return -1; } public static void main(String[] args) { } }