经常使用数据结构

栈(Stack)

基本操做

  • 推入(push)
  • 弹出(pop)

基本特色

  • 先进后出,后进先出。
  • 除头尾节点之外,每一个元素只有一个前驱和一个后继。

队列(Queue)

基本操做

  • 入队(Enqueue)
  • 出队(Dequeue)

基本特色

  • 先进先出
  • 只容许在队列的后端(rear)进行插入操做,在前端(front)进行删除操做

常见实现

  • 单向队列 - 使用链表做为基本数据结构,不存在伪溢出问题,没有长度限制,但插入和读取的时间代价较高。
  • 循环队列 - 更简单防止伪溢出,但队列大小是固定的。

双端队列(deque,double-ended queue)

基本操做

  • 头部插入(push,cons)
  • 尾部插入(inject,snoc)
  • 头部删除(pop)
  • 尾部删除(eject)
  • 查看头部(peek first)
  • 查看尾部(peek last)

基本特色

  • 能够在队列任意一端入队和出队。

链表(Linked List)

基本操做

  • 插入(O(1))
  • 删除(O(1))
  • 查找(O(N))

基本特色

  • 是一种线性表,但不会顺序地存储数据,而是在每一个节点存下下一节点的指针(Pointer)。

常见实现

  • 单向链表
  • 双向链表
  • 循环链表

跳跃列表(跳表,Skip List)

散列表(Hash Table)

基本特色

  • 以散列函数计算得到的值做为关键字存取内存中的数据结构。
相关文章
相关标签/搜索