今天爱分享给大家带来JAVA 中常用的数据结构有哪些?【面试题详解】,希望能够帮助到大家。
数据结构:
①数组 (Array)
在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组
织起来。这些按序排列的同类数
据元素的集合称为数组。在 C 语言中, 数组属于构造数据类型。一个数组可
以分解为多个数组元素,这些数组
元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又
可分为数值数组、字符数组、指
针数组、结构数组等各种类别。
②栈 (Stack)
栈是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数
据,先进入的数据被压入栈底,最后
的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一
个读出来)。
③队列 (Queue) 一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后
端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列中没有元素时,称为空队列。
④链表 (Linked List) 一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过
链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动
态生成。每个结点包括两个部分:
一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
⑤树 (Tree)
树是包含 n(n>0)个结点的有穷集合 K,且在 K 中定义了一个关系 N,N 满
足 以下条件:
(1)有且仅有一个结点 k0,他对于关系 N 来说没有前驱,称 K0 为树的根结
点。简称为根(root)
(2)除 K0 外,k 中的每个结点,对于关系 N 来说有且仅有一个前驱。
(3)K 中各结点,对关系 N 来说可以有 m 个后继(m>=0)。
⑥堆 (Heap)
在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常
我们所说的堆的数据结构,是指
二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一
个堆。
⑦图 (Graph)
图是由结点的有穷集合 V 和边的集合 E 组成。其中,为了与树形结构加以区
别,在图结构中常常将结点称为顶点,
边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相
邻关系。
⑧散列表 (Hash)
若结构中存在关键字和 K 相等的记录,则必定在 f(K)的存储位置上。由此,
不需比较便可直接取得所查记录。称
这个对应关系 f 为散列函数(Hash function),按这个思想建立的表为散列表。