public class LinkedList<T> {
private Node<T> head;
private int size;
public LinkedList() {
head = null;
size = 0;
}
public void add(T data) {
Node<T> newNode = new Node<>(data);
if (head == null) {
head = newNode;
} else {
Node<T> temp = head;
while (temp.getNext() != null) {
temp = temp.getNext();
}
temp.setNext(newNode);
}
size++;
}
public void remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of range: " + index);
}
if (index == 0) {
head = head.getNext();
} else {
Node<T> temp = head;
for (int i = 0; i < index - 1; i++) {
temp = temp.getNext();
}
temp.setNext(temp.getNext().getNext());
}
size--;
}
public T get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of range: " + index);
}
Node<T> temp = head;
for (int i = 0; i < index; i++) {
temp = temp.getNext();
}
return temp.getData();
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
private static class Node<T> {
private T data;
private Node<T> next;
public Node(T data) {
this.data = data;
this.next = null;
}
public T getData() {
return data;
}
public Node<T> getNext() {
return next;
}
public void setNext(Node<T> next) {
this.next = next;
}
}
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.remove(1);
System.out.println(list.get(0)); // 输出 1
System.out.println(list.get(1)); // 输出 3
System.out.println(list.size()); // 输出 2
System.out.println(list.isEmpty()); // 输出 false
}
}
在上面的代码中,我们定义了一个名为 LinkedList 的泛型类,表示一个链表。我们使用 Node 内部类表示链表中的节点,每个节点都包含一个 data 属性和一个 next 属性,表示指向下一个节点的指针。
我们的链表类有几个方法,包括 add 方法用于在链表末尾添加元素,remove 方法用于删除指定索引的元素,get 方法用于获取指定索引处的元素,以及 size 和 isEmpty 方法用于获取链表大小和判断链表是否为空。
在 main 方法中,我们创建一个整型链表,并向其中添加三个元素。然后,我们删除第二个元素,并打印第一个和第二个元素,以及链表大小和是否为空的状态。
要运行此代码