LinkedList 删改查
时间: 2024-01-12 07:01:00 浏览: 61
LinkedList 是一种链式数据结构,每个节点都包含一个值和指向下一个节点的指针。这种数据结构支持快速的插入和删除操作。
删操作:
1. 删除链表中的一个节点,需要找到该节点的前一个节点,然后将前一个节点的指针指向该节点的下一个节点。
2. 删除链表的头节点,只需将头节点指针指向头节点的下一个节点。
3. 删除链表的尾节点,需要找到倒数第二个节点,然后将其指针指向 null。
改操作:
1. 修改链表中的一个节点的值,只需找到该节点,然后修改其值即可。
查操作:
1. 查找链表中的一个节点,需要遍历整个链表,直到找到该节点。
2. 查找链表中的最后一个节点,只需遍历整个链表,直到找到尾节点。
3. 查找链表中的第一个节点,只需访问头节点即可。
4. 查找链表的长度,需要遍历整个链表,并记录遍历的次数。
相关问题
内部类 LinkedList 删改查
Java中的内部类是定义在另一个类内部的类,可以访问外部类的私有属性和方法。LinkedList是Java集合框架中的一个双向链表,可以实现在链表头部和尾部的快速插入和删除操作。
以下是LinkedList内部类的删改查操作示例:
1. 删除操作
```java
public void deleteNode(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
if (index == 0) {
head = head.next;
size--;
return;
}
Node<T> prev = head;
Node<T> curr = head.next;
for (int i = 1; i < index; i++) {
prev = curr;
curr = curr.next;
}
prev.next = curr.next;
if (index == size - 1) {
tail = prev;
}
size--;
}
```
2. 修改操作
```java
public void set(int index, T value) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException();
}
Node<T> curr = head;
for (int i = 0; i < index; i++) {
curr = curr.next;
}
curr.value = value;
}
```
3. 查找操作
```java
public int indexOf(T value) {
Node<T> curr = head;
int index = 0;
while (curr != null) {
if (curr.value.equals(value)) {
return index;
}
curr = curr.next;
index++;
}
return -1;
}
```
以上是LinkedList内部类删改查操作的示例,可以根据具体需求进行修改和扩展。
arraylist和linkedlist添加查询元素速率
ArrayList和LinkedList都是Java集合框架中的List接口的实现类,它们在添加和查询元素方面有所不同。
对于添加元素,LinkedList比ArrayList更快,因为在LinkedList中添加元素只需要更改节点的指针,而在ArrayList中添加元素可能需要重新分配内存,从而导致性能下降。
对于查询元素,ArrayList比LinkedList更快,因为在ArrayList中元素是连续存储的,因此可以通过索引来快速访问元素,而在LinkedList中需要遍历整个链表来查找元素。
综上所述,如果您需要频繁添加元素而不需要频繁查询元素,那么LinkedList可能是更好的选择。如果您需要频繁查询元素而不需要频繁添加元素,那么ArrayList可能是更好的选择。