1
线性结构:线性表(数组、链表、栈、队列、哈希表)
树形结构:二叉树、AVL树、红黑树、B树、堆、Trie、哈夫曼树、并查集
图形结构:邻接矩阵、邻接表
线性表:具有 n 个相同类型元素的有限序列( n ≥ 0 )
常见的线性表有:数组、链表、栈、队列、哈希表(散列表)
2动态数组接口设计
int size(); // 元素的数量
public int size() {
return size;
}
boolean isEmpty(); // 是否为空
public boolean isEmpty() {
return size == 0;
}
boolean contains(E element); // 是否包含某个元素
public boolean contains(E element) {
return indexOf(element) != ELEMENT_NOT_FOUND;
}
void add(E element); // 添加元素到最后面
public void add(E element) {
add(size, element);
}
E get(int index); // 返回index位置对应的元素
public E get(int index) {
rangeCheck(index);
return elements[index - 1];
}
E set(int index, E element); // 设置index位置的元素
public E set(int index, E element) {
rangeCheck(index);
E old = elements[index];
elements[index] = element;
return old;
}
void add(int index, E element); // 往index位置添加元素
public void add(int index, E element) {
rangeCheckForAdd(index);
enssureCapacity(size + 1);
for (int i = size - 1; i >= index; i--) {
elements[i + 1] = elements[i];
}
elements[index] = element;
size++;
}
E remove(int index); // 删除index位置对应的元素
public E remove(int index) {
rangeCheck(index);
E x = elements[index];
for (int i = index + 1; i < size; i++) {
elements[i - 1] = elements[i];
}
elements[--size] = null;
return x;
}
int indexOf(E element); // 查看元素的位置
public int indexOf(E element) {
if (element == null) {
for (int i = 0; i < size; i++) {
if (elements[i] == null) {
return i;
}
}
} else {
for (int i = 0; i < size; i++) {
if (elements[i].equals(element)) {
return i;
}
}
}
return ELEMENT_NOT_FOUND;
}
void clear(); // 清除所有元素
public void clear() {
for (int i = 0; i < size; i++) {
elements[i] = null;
}
size = 0;
}