Java面试之数据结构的简单介绍

来源:互联网 发布:linux tar命令安装 编辑:程序博客网 时间:2024/05/16 14:42

数据结构:就是一堆数据的存储方式.

这里写图片描述

1.数组:

列表:按照一定的线性顺序,排列而成的数据项的集合。
列表的两种主要表现是数组和链表
数组:有时候也称之为有序列表。
这里写图片描述

2.链表

链表linked:链式存储。通过地址“链”起来。

3.栈(Stack)

是一种特殊类型的列表。
缺点:限制了插入和删除的位置,只能在一端(尾部)进行
插入也叫进栈或压栈
删除也叫出栈或弹栈
实际应用:浏览器的“前进”和“后退”;很多软件的“撤销”和“恢复”

4.队列(Queue)

也是一种特殊类型的列表。
特点:先进先出,后进后出。
缺点:限制了插入和删除的位置,只能在一端(尾部)进行插入,在另一端(头部)进行删除
实际应用:客服电话排队等待、银行排号

5.散列表,也叫哈希表hashtable。是一种典型的非线性结结构。

查询时,根据关键码值(Key-value)而直接进行访问的数据。
是由:目录+链表组成。就像字典。
特点:元素无序。
这里写图片描述

6.树形结构是一种:

非线性数据结构。体现了“一对多”的树形关系,也是一类重要的数据结构。
在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一个前驱结点。叶子结点没有后续结点,其余每个结点的后续节点数可以是一个也可以是多个。树形结构可表示从属关系、并列关系。
无序树(Unordered Tree):树中任意一个结点的各孩子结点之间的次序构成无关紧要的树。通常树指无序树。
有序树(Ordered Tree):树中任意一个结点的各孩子结点有严格排列次序的树。二叉树是有序树,因为二叉树中每个孩子结点都确切定义为是该结点的左孩子结点还是右孩子结点。

7.二叉树

是每个结点最多有两个子节点的有序树。
这两个子树有左右之分,分别称之为:“左子树”(left subtree)和“右子树”(right subtree)。
平衡二叉树(红黑树)指的是根节点左右两个子树的高度差不超过1,即左右几乎对称 。左子树上所有节点的值均小于或等于它的根节点的值,右子树上所有节点的值均大于或等于它的根节点的值。

原创粉丝点击