其他语言 数组 map php 只有一个数组 利用散列表实现随机访问,链表实现顺序访问,模拟顺序写入
数据结构
数组:
随机访问,删除时间复杂度高 删除O(n) 使用标记法写满清理可以均摊到O(1)
链表:
删除,添加快,访问复杂度高. 实现练习: 练习题LeetCode对应编号:206,141,21,19,876
算法:
栈:
动态扩容 应用: 函数压栈调用 中序四则运算
队列:
用数组实现的队列叫作顺序队列,用链表实现的队列叫作链式队列 链式队列: 无限制 顺序队列:有限制,循环队列 重点: head,tail指针标记 存储满时数据搬移 循环队列避免数据搬移
public class CircularQueue {
// 数组:items,数组大小:n
private String[] items;
private int n = 0;
// head表示队头下标,tail表示队尾下标
private int head = 0;
private int tail = 0;
// 申请一个大小为capacity的数组
public CircularQueue(int capacity) {
items = new String[capacity];
n = capacity;
}
// 入队
public boolean enqueue(String item) {
// 队列满了
if ((tail + 1) % n == head) return false;
items[tail] = item;
tail = (tail + 1) % n;
return true;
}
// 出队
public String dequeue() {
// 如果head == tail 表示队列为空
if (head == tail) return null;
String ret = items[head];
head = (head + 1) % n;
return ret;
}
}