目的 : 加强类与对象的内存分配理解,加强操作能力、理解数据结构。
结构 : 数据元素之间的关系。
数据结构 : 带有结构的数据对象。
线性结构: 各数据元素之间的逻辑以用一个线性序列简单的表达出现。反之为非线性结构。
按逻辑结构分为 : 线性结构与非线性结构。
线性结构包括:线性表-数组(顺序表)、链表(链式表)+单链、双链
                        线性表-队列、栈
非线性结构包括:树、图
 
线性表:
        线性表的顺序存储结构:(数组) 
                    用一组地址连续存储空间,一次存储线性表的数据元素。
                特点:
                    物理上相邻的数据元素,存储的位置也相同。
        线性表的链式存储结构:(链表)
                    用一组任意存储单元,存放线性表的数据元素,并通过指针相连接结点的序列。第一个元素为头结点(头结点必须保护起来不能移动,可以使用第三变量保存,然后使用第三变量进行实际操作)。最后一个为尾结点。
                    结点包含  数据域: 本身存储的信息。
                                    指针域(链域、引用域):存储后继元素的存储地址。      
 
栈: 限定只能在表的一端进行插入和删除的线性表。
        栈顶: 允许入栈出栈的一端。
        栈底: 不允许入栈出栈的一端。
        特点: 先进后出    First In Last Out
 
队列: 限定只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。
        对首: 删除的一端(出队)
        队尾: 插入的一端(入队)
        特点: 先进先出 First In First Out
 
建立链表:①先确定头引用对象    ②在建立表的过程中,每一个数据元素中含指向下一个数据元素的地址。
建立链表的方法:①前插法    ②尾插法    ③插入两个结点之间。
 
单链表:若链表中的结点包含一个指针域指向后继结点。
        缺点:只能顺着结点的直接后继查询结点。
双链表:链表中的结点都包含了两个引用,分别指向直接前驱和直接后继。
        双链的组成:数据域、直接前继、直接后继
 
单链与双链的区别: 单链表是单向访问的,而双链表是可以双向访问的。
                                  单链表的删除,必须知道直接前驱,而双链表的删除,只需知道删除的结点。
 
顺序表(数组)与链表的区别:
            ① 存储空间的区别,数组是静态分配内存空间的,所有元素是存放在一组地址连续的存储单元中,一旦分配,不可更改,不便于扩展,数据元素在数组中的顺序号可确定它在存储单元中的位置。因此顺序表中不需要指针域,而链表是动态分配内存空间的,存储空间是不确定的。
            ② 数组便于查找和修改(下标定位),但不利于插入和删除(数据移动量过大),也不便于扩充(连续的地址,静态存储结构)。而链表不便于查找和修改(从链头到链尾数据量过大),但便于插入和删除并且速度快(断链即可)。
 
树 : N(N>0)个结点的有限集合。有且仅有一个根结点。
根结点:一棵树中没有父结点的结点。
叶子结点(终端结点):一棵树中没有子结点。
兄弟结点:同一个父结点的所有结点。
结点度(分支度):每一个所拥有结点的个数。
树的度(树的分支度):一棵树中最大的结点。
祖先:由某个结点X到根结点之路径上的所有结点,均为X结点的祖先。
 
二叉树(二次树或二分树):结点最多只有两个。
二叉树要满足的条件:①有且仅有称为根的结点。
                                ②其余结点分为两个互不相交的集合,称为左子树和右子树。
在二叉树中,第i层的结点总数不超过2^(i-1);
满二叉树:树中所有结点均在同一阶层而其他非终端结点度均为“2”,树的高度为K,其结点为2^K - 1;
完全二叉树:若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层有叶子结点,并且叶子结点都是从左到右依次排布。
    一棵树如果是满二叉树,那么它一定是完全二叉树,一棵树如果是完全二叉树,它不一定是满二叉树。
    (小左大右)
二叉树的遍历:①先序:根 左 右 若二叉树非空,则访问根结点,按先序遍历左子树,再遍历右子树。
                     ②中序:左 根 右 若二叉树非空,按中序遍历左子树,再访问根结点,再按中序遍历右子树。
                     ③后序:左 右 根 若二叉树非空,按后序遍历左子树,再遍历右子树,再访问根结点。
 
二叉树的删除:①无左无右:分为: 根结点 非根结点,但是是叶子结点(分为:左叶子 右叶子)
                     ②有左无右:分为: 根结点 非根结点(分为:左结点 右结点)
                     ③有右无左:分为: 根结点 非根结点(分为:左结点 右结点)
                     ④有左有右:分为: 根结点 非根结点(分为:左结点 右结点)(判断是要上移左结点的最右边或右结点的最左边)
 
 
 
 

Java基础——数据结构总结的更多相关文章

  1. java 基础数据结构

    数据结构, 需要考虑两个方面: 1. 每个元素具体的存储方法 (java中是一个对象) 2. 元素之间的关系如何实现存储 (java中也是一个对象) 另外在java中, 已经可以把跟数据结构有关的一些 ...

  2. java 基础数据结构源码详解及数据结构算法

    http://www.cnblogs.com/skywang12345/category/455711.html http://www.cnblogs.com/liqiu/p/3302607.html

  3. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  4. Java实现的基础数据结构

    Java实现的基础数据结构 0,常用的基础数据结构 图1 基础数据结构&相关特性 图2 Java自带的类集框架&继承关系图 1,数组[Array] 特点:长度固定.查找方便[直接使用i ...

  5. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  6. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. java之数据结构之链表及包装类、包

    链表是java中的一种常见的基础数据结构,是一种线性表,但是不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针.与线性对应的一种算法是递归算法:递归算法是一种直接或间接的调用自身算法的过 ...

  8. 万能的林萧说:一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。

    来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,"招人啦." 然某群友曰,"群主,俺想去." LZ回之,"你 ...

  9. Java基础应用

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

随机推荐

  1. 操蛋的Django model------select_related() 主要用于一对一和一对多

    实例: 创建表,表都是一对一,一对多 class Province(models.Model): name = models.CharField(max_length=10) class City(m ...

  2. Spring Data JPA简单使用

    用Spring Data JPA操作数据库 这份教程教你用Spring Data JPA从关系数据库mysql中存储和提取数据.总结来自https://spring.io/guides/gs/acce ...

  3. ThreadPoolExecutor(上篇)

    Java有两个线程池类:ThreadPoolExecutor和ScheduledThreadPoolExecutor,继承AbstractExecutorService类,AbstractExecut ...

  4. Hibernate中的一对一注解配置

    Card类 package cn.OneToOne2017109.entity; import javax.persistence.*; /** * Created by YSS on 2017/10 ...

  5. 从零开始的全栈工程师——underscore

    underscore 是js封装的一个js库 库和框架是有区别的 mvc框架就是backbone就是依赖这个库underscore就是定义了一个_( 下划线对象 ); 函数库的所有的方法都归属于这个对 ...

  6. IS Decisions如何帮助企业提高安全标准

    PCI DSS标准有什么要求? 简单地说,PCI DSS要求最高级别的网络安全性.这一标准如今广泛应用于需要存储.管理.传输客户(或持卡人)个人数据的行业和领域. 施行严格的访问监控措施 为了保证关键 ...

  7. 03_Jsoup

    [1.获取一个页面所有的链接] public static void main(String[] args) throws IOException { String url="http:// ...

  8. XP无法访问SharePoint 2010的问题

    最近用户反馈XP系统的电脑无法访问SharePoint 2010系统,换成了火狐浏览器后可以正常访问,但是在上传附件时出现异常,支持人员给的解决方案是换操作系统,要换成win7. 但是因为工作原因,不 ...

  9. solidity语言7

    单位和全局变量 Ether Units: wei, finney, szabo, ether Time Units: 1 == 1 seconds 1 minutes == 60 seconds 1 ...

  10. 恢复scout工具栏

    删除scout安装路径 C:\PROGRAM FILES\SIEMENS\STEP7\U7UMC\DATA\WRKBNCH 下的三个文件: acppersi.dat uespersi.dat uesu ...