LinkedList 要求:包括add、get、size、indexOf、remove方法的实现,并在每个功能前注释其实现的逻辑,然后在主方法中调用各个方法
时间: 2023-12-29 20:03:35 浏览: 67
好的,我来为您实现一个简单的 LinkedList 类:
```java
public class LinkedList<E> {
private Node<E> head;
private int size;
/**
* 添加元素
*/
public void add(E item) {
if (head == null) {
head = new Node<>(item);
} else {
Node<E> node = head;
while (node.next != null) {
node = node.next;
}
node.next = new Node<>(item);
}
size++;
}
/**
* 获取指定位置的元素
*/
public E get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
Node<E> node = head;
for (int i = 0; i < index; i++) {
node = node.next;
}
return node.item;
}
/**
* 获取链表长度
*/
public int size() {
return size;
}
/**
* 查找元素在链表中的位置
*/
public int indexOf(E item) {
Node<E> node = head;
for (int i = 0; i < size; i++) {
if (node.item.equals(item)) {
return i;
}
node = node.next;
}
return -1;
}
/**
* 删除指定位置的元素
*/
public void remove(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
if (index == 0) {
head = head.next;
} else {
Node<E> node = head;
for (int i = 0; i < index - 1; i++) {
node = node.next;
}
node.next = node.next.next;
}
size--;
}
private static class Node<E> {
E item;
Node<E> next;
Node(E item) {
this.item = item;
}
}
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Hello");
list.add("World");
list.add("Java");
System.out.println(list.get(0)); // 输出 Hello
System.out.println(list.get(1)); // 输出 World
System.out.println(list.get(2)); // 输出 Java
System.out.println(list.size()); // 输出 3
System.out.println(list.indexOf("World")); // 输出 1
list.remove(1); // 删除第2个元素
System.out.println(list.get(1)); // 输出 Java
System.out.println(list.size()); // 输出 2
}
}
```
上面的代码中,我们实现了 LinkedList 类,并提供了 `add`、`get`、`size`、`indexOf`、`remove` 等方法的实现。在主方法中,我们简单地调用了各个方法,以便测试其功能是否正常。
阅读全文