package com.coding.basic; import com.coding.basic.LinkedList.Node; public class LinkedList implements List { private Node head; private int size; public void add(Object o){ if (head.data == null) { head.data = o; head.next = null; size++; return; } Node node = new Node(o); Node curr = head; while (curr.next != null) { curr = curr.next; } curr.next = node; size++; } public void add(int index , Object o){ if (index < 0 || index > size) { System.out.println(index + "无效指数"); return; } if (head.data == null) { if (index == 0) { head.data = o; head.next = null; size++; return; } else { System.out.println("无效指数"); return; } } Node node = new Node(o); Node curr = head; for (int i = 0; i < index - 1; i++) { curr = curr.next; } Node temp = curr.next; curr.next = node; node.next = temp; size++; } public Object get(int index){ if (index < 0 || index > size) { System.out.println(index + " is invalid index!"); return null; } Node result = head; for (int i = 0; i < index; i++) { result = result.next; } return result; } public Object remove(int index){ if (index < 0 || index > size) { System.out.println(index + " is invalid index!"); return null; } Node curr = head; for (int i = 0; i < index - 1; i++) { curr = curr.next; } Node result = curr.next; curr.next = curr.next.next; size--; return result; } public int size(){ return this.size; } public void addFirst(Object o){ if (head.data == null) { head.data = o; head.next = null; size++; return; } Node temp = head; head = new Node(o); head.next = temp; size++; } public void addLast(Object o){ if (head.data == null) { head.data = o; head.next = null; size++; return; } Node node = new Node(o); Node curr = head; while (curr.next != null) { curr = curr.next; } curr.next = node; size++; } public Object removeFirst(){ if (head.data == null) { return null; } Node result = head; head = head.next; size--; return result; } public Object removeLast(){ if (head.data == null) { return null; } Node curr = head; for (int i = 0; i < size - 1; i++) { curr = curr.next; } Node result = curr.next; curr.next = null; size--; return result; } public Iterator iterator(){ return null; } private static class Node{ Object data; Node next; public Node(Object o) { data = o; next = null; } } }