数据结构

数据结构

常见结构

  1. 链表(Linked List):内存分配不连续,每个元素包含两个节点,数据域、指针。
  2. 数组(Array):内存分配连续,通过下标访问。
  3. 队列(Queue):一端进一端出,先进先出(FIFO)。
  4. 栈(Stack):栈顶一端操作,后进先出(LIFO)。
  5. 堆(Heap):通常可以看做一棵完全二叉树的数组对象。
  6. 树(Tree):有限节点,有层次关系。
  7. 图(Map):顶点、边,分为有向图和无向图。
  8. 散列表(Hash):key、value 键值对。通过桶(bucket)提高效率,通过链表或红黑树处理冲突。

链表、数组、队列、栈属于线性数据结构,堆、树、图、散列表属于非线性数据结构。链表、数组、队列、栈、堆、树、图支持顺序访问,数组还支持随机访问,散列表只能随机访问。

树的顺序访问方式有前序遍历、中序遍历、后序遍历,图的顺序访问方式有深度优先遍历、广度优先遍历。

内存中的堆栈

堆(Heap)和栈(Stack)是计算机科学中两个重要的数据结构,它们在内存中用于存储和管理数据。

栈以一种连续的方式组织数据,用于在运行时存储函数调用、局部变量、参数以及程序执行的上下文。当一个函数被调用时,栈会分配一块内存空间用于存储该函数的参数和局部变量。当函数执行完毕时,栈会释放该函数所占用的内存空间,自动分配,自动释放。

堆是一种动态分配内存的方式,以无序的方式存储,可以在任何时候进行分配和释放。用于在运行时创建对象、数据结构或者动态数组。堆中分配的内存需要手动释放,否则可能会导致内存泄漏。

相关算法题

问:1000亿个整数,请找出其中最大的100个。
答:取100个数构建二叉树,迭代淘汰。

最后更新于