数据结构

自引用的类

自引用类包含一个数据成员,其指向与自身类型相同的一个对象。

可以把自引用的对象连接在一起,从而构成有用的数据结构。


动态内存请求

用于创建和维护动态空间,具体的就是释放不再需要的空间以及获取内存空间来放置新节点。

对于动态内存空间的释放,在Java上不用显示说明。Java自动完成无用单元的收集工作。

动态内存请求的极限在机器上为系统能够提供的最大虚拟内存大小。

运算符new用来请求内存。new使用请求内存的对象类型作为参数,返回请求完成时这个类型对象的一个引用。

注意:在使用new运算符时,应测试OutOfMemoryException异常。


链表

链表是一些自引用对象的线性集合,这些对象称作节点。

可以通过链表的第一个节点的引用得到整个链表。但链表的节点通常并不连续存放在内存中。

通常链表的最后一个节点的引用设置为null。

动态的,可以根据需要来增加或减少大小,提供适当的存储空间。

链表中每个节点由两部分组成:当前节点数据+链表中下一个节点对象的引用


堆栈

本质就是一个压缩的链表,仅能从顶部添加或删除节点。后进先出

堆栈的最后一个成员设置为null,表示堆栈的底部。

主要操作:push(推入) 和 pop(弹出)

堆栈在编译器分析表达式和产生机器码时大量使用。

可以通过继承List类来创建一个堆栈类。


队列

队列中的节点只能从首部删除,从尾部添加。先进先出

队列的最后一个节点的指针为null

主要操作:enqueue(入队),dequeue(出队)

同样可以通过继承List类来创建一个队列。


树是一种非线性的,二维的,拥有特殊属性的数据结构。

树的节点包含两个或更多的节点。


二叉树——每个节点含有两个指针的树。

根节点是树中的第一个节点,其中的每个指针都指向一个子节点。

左子节点是左子树的第一个节点,同理,右子节点是右子树的第一个节点。同一个节点的子节点称为兄弟节点。没有子节点的节点称为叶节点。


二叉查找树

任何左子树的值都小于它的父节点的值,任何右子树的值都大于父节点的值。

树的遍历:中序遍历,前序遍历,后序遍历。

前序遍历:中左右

中序遍历:左中右

后序遍历:左右中

二叉查找树的创建过程:

1.将第一个数据(data )设置为父节点。

2. d <= data, 如果左节点为null,那么创建一个新的左节点;如果不为空,则在以左节点为父节点重复步骤2;

    d >= data, 如果右节点为null,那么创建一个新的右节点;如果不为空,则在以右节点为父节点重复步骤2;


链表,堆栈,队列都是线性数据结构。树不是线性数据结构。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值