数据结构

数据结构数据结构

大家好,又见面了,我是你们的朋友全栈君。

常用数据类型

常用的有数组、栈、队列、链表、树、图、堆、散列表

数组(Array)

数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还可以有一维、二维以及多维等表现形式。

栈( Stack)

是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐个读出。栈在汇编语言程序中,经常用于重要数据的现场保护。栈中没有数据时,称为空栈。

队列(Queue)

队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。一般来说,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列中没有元素时,称为空队列。

链表( Linked List)

链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。链表由一系列数据结点构成,每个数据结点包括数据域和指针域两部分。其中,指针域保存了数据结构中下一个元素存放的地址。链表结构中数据元素的逻辑顺序是通过链表中的指针链接次序来实现的。

树( Tree)

是典型的非线性结构,它是包括,2个结点的有穷集合K。在树结构中,有且仅有一个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有一个前驱结点,而且可以有两个后继结点,m≥0。

图(Graph)

是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。如果两个顶点之间存在一条边,那么就表示这两个顶点具有相邻关系。

堆(Heap)

是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。堆的特点是根结点的值是所有结点中最小的或者最大的,并且根结点的两个子树也是一个堆结构。

散列表(Hash)

散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。

数据结构分类

线性结构和非线性结构两类

线性结构

1、线性结构是非空集。
2、线性结构有且仅有一个开始结点和一个终端结点。
3、线性结构所有结点都最多只有一个直接前趋结点和一个直接后继结点。
线性表就是典型的线性结构,还有栈、队列和串等都属于线性结构。

非线性结构

1、非线性结构是非空集。
2、非线性结构的一个结点可能有多个直接前趋结点和多个直接后继结点。
在实际应用中,数组、广义表、树结构和图结构等数据结构都属于非线性结构。

数据结构常用算法

1、检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。
2、插入:往数据结构中增加新的节点。
3、删除:把指定的结点从数据结构中去掉。
4、更新:改变指定节点的一个或多个字段的值。
5、排序:把节点按某种指定的顺序重新排列。例如递增或递减。

数据类型

数据类型

类型名称 内容
Uninterpreted 位元字节TritTryteWord
数值 整数Fixed-point浮点数RationalComplexBignumInterval
文本 字符字符串
指针 物理地址Reference
组合 Algebraic data type数组Associative arrayClassListObjectOption typeProductRecordSetUnion
其他 布尔型Bottom typeCollectionEnumerated type异常First-class functionOpaque data typeRecursive data type信号标字串流Top typeType classUnit typeVoid

 

数据结构

集合 容器
有向无环图 二元决策图 无向图
数组 关联数组 Multimap
多重集 散列表 树状数组
列表 链表 队列 堆栈
循环队列 跳跃列表
二叉查找树 线段树
红黑树 AVL树
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106403.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 04_使用JS完成功能

    04_使用JS完成功能

    2021年7月11日
    83
  • C++ 核心编程

    C++核心编程引用**作用:**给变量起别名语法:数据类型&别名=原名引用是一种特殊的指针类型,引用一旦被定义就不能重新赋值,并且不能被设置为空值。intmain()

    2021年12月13日
    36
  • Java8 基本类型数组转换为List[通俗易懂]

    Java8 基本类型数组转换为List[通俗易懂]Java8种基本类型(byte/short/int/long/float/double/char/boolean)的数组(byte[]/short[]/int[]/long[]/float[]/double[]/char[]/boolean[])不能直接通过Arrays.asList方法转换为List,因为List的元素必须是包装类。在Java8之前,想要实现这种转换只能通过循环,Java8提供…

    2022年8月23日
    16
  • latex中如何画表格_时态结构总结表格

    latex中如何画表格_时态结构总结表格三线表表格的合并三线表在写论文的时候我们常常会用到三线表,三线表的基本语法就是下面这个样子的。如果是在双栏的环境里,如果我们的表格比较大,我们一般需要在表格的环境中加星号,如果是表格只占一栏,这个时候我们就不需要加星号,我们假设我们使用表格的情况是占双栏的。三线表的精华就是那三根线了啦,用的命令就是\toprule,\midrule,\bottomrule这…

    2022年8月11日
    4
  • Java Calendar 日历类的时间操作 Timestamp Date Calendar 相互转换

    Java Calendar 日历类的时间操作 Timestamp Date Calendar 相互转换JavaCalendar日历类的时间操作,这也许是Java环境下创建和管理日历及操作时间最简单的一个方案了,示范代码也很简单。演示了获取时间,日期时间的累加和累减,以及日期时间的比较。原文地址:blog.csdn.net/joyous/article/details/9630893注意事项:Calendar的month从0开始,也就是全年12个月由0~1…

    2022年4月26日
    51
  • 一篇文章搞定java中的垃圾回收机制面试题[通俗易懂]

    一篇文章搞定java中的垃圾回收机制面试题[通俗易懂]  一篇文章搞定java中的垃圾回收机制面试题任何语言在运行过程中都会创建对象,也就意味着需要在内存中为这些对象在内存中分配空间,在这些对象失去使用的意义的时候,需要释放掉这些内容,保证内存能够提供给新的对象使用。对于对象内存的释放就是垃圾回收机制,也叫做gc,对于java开发者来说gc是一个双刃剑我们这里找了两张搞笑图片分别来表示c语言的垃圾回收和java的垃圾回收。注意:并…

    2022年5月27日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号