使用java实现顺序表和链表
时间: 2024-09-14 09:10:15 浏览: 39
Java实现单向链表反转
顺序表和链表是两种基本的数据结构,它们在Java中可以分别通过数组和链式节点来实现。
顺序表通常使用数组来实现,因为它提供了连续的内存空间,可以通过下标直接访问元素,实现O(1)时间复杂度的查找操作。顺序表的插入和删除操作时间复杂度为O(n),因为这可能涉及到移动大量元素来填补因删除元素或插入新元素而在数组中产生的空位或额外空间。
链表使用一系列的节点来存储数据,每个节点都包含数据以及指向下一个节点的引用(在双向链表中,还有指向前一个节点的引用)。链表的插入和删除操作通常只需要改变相应的指针,因此在理想情况下时间复杂度为O(1),而查找操作需要从头节点开始,遍历链表,直到找到目标节点,所以时间复杂度为O(n)。
以下是使用Java实现顺序表和链表的简单示例:
顺序表(数组实现):
```java
public class ArrayList<T> {
private T[] data;
private int size;
public ArrayList(int capacity) {
data = (T[]) new Object[capacity];
size = 0;
}
public void add(T element) {
if (size >= data.length) {
resize();
}
data[size++] = element;
}
// 其他方法,如get(index), remove(index)等
private void resize() {
// 实现扩容逻辑
}
}
```
链表(单向链表实现):
```java
public class LinkedList<T> {
private Node<T> head;
private Node<T> tail;
private int size;
private static class Node<T> {
T data;
Node<T> next;
public Node(T data, Node<T> next) {
this.data = data;
this.next = next;
}
}
public LinkedList() {
head = null;
tail = null;
size = 0;
}
public void add(T element) {
Node<T> newNode = new Node<>(element, null);
if (head == null) {
head = newNode;
tail = newNode;
} else {
tail.next = newNode;
tail = newNode;
}
size++;
}
// 其他方法,如get(index), remove(index)等
}
```
阅读全文