学习笔记整理--数据结构

学习笔记整理–数据结构

顺序结构

	其特征为:物理空间连续,有标号。
	最典型的就是数组
	例如  : int[] a = {1,2,3};
	这个数组a中的三个元素的物理占用空间是连续 的,而且都有下标分别为0,1,2.
	这种结构因为有下标的存在使得,数据的查找很方便,但是数据的插入删除则麻烦。

链表结构

    链表结构最大的特点为:物理空间不连续,只有头/尾节点
	其通常的代码格式为:
public class Node {
        Object data;
        Node next;
    }
链表是没有现成的JDK的,所以我们通常要在定义一个链表的内部类。链表是由“节点“组成的,没有一个节点通常来说分为:连接到下一个端口和这个节点所包含的内容。
我们在使用链表前,还要定义一个head头结点。
Node head = new Node();

这个头结点不存储数据,只是用来当作链表的开始。
链表由于其物理空间不连续的特点。使得其插入和删除数据变得比较简单,只要改变其连接的顺序就可以了。
其中链表也可以是由尾节点开始的。

队列(Queue)

队列:双端队列,没有标号,实现通过顺序/链表实现
它是一种特殊的线性表。只允许在表的前端进行删除或者获取,在表的末端插入。
它在JDK中的方法也很少,只有六种:分别为
boolean add(E e) :将指定的元素插入此队列
E element() : 获取,但是不移除此队列的头。
boolean offer(E e) :将指定的元素插入此队列
E peek() : 获取但不移除此队列的头;如果此队列为空,则返回 null。
E poll() :获取并移除此队列的头,如果此队列为空,则返回 null。
E remove() :获取并移除此队列的头

栈(Stack)

	栈最大特点:从哪里进来就会从哪里出去,实现通过顺序/链表实现。
	所以栈是先进后出。如同水杯中的水一样,最先倒入的水会进入杯底,后入反而在杯头,因此最先获取的数据是最后输入的数据。
	它的方法就只有5个:

boolean empty() 测试堆栈是否为空。
E peek() 查看堆栈顶部的对象,但不从堆栈中移除它。
E pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。
E push(E item) 把项压入堆栈顶部。
int search(Object o) 返回对象在堆栈中的位置,以 1 为基数。

散列表 (Set)

散列结构:不连续,没有顺序 不允许重复 equals方法判断是否重复
Set -> 截取Map(映射表)
HashSet ->内存存储位置,由hasdCode决定
存储过程:1.调用自身的hashCode()方法计算存储位置
2:如果位置上没有元素,直接存入
3.如果位置上有元素,再调用自身equals方法和该位置上的元素比较
4.如果比较不一致,另计算位置存入(重复上面)
5.如果比较一致,不存入

树 (Tree)

	Set ->SortedSet -> TreeSet

遍历方式: 先序遍历:中左右
后序遍历:左右中
中序遍历:左中右(主要使用)
Tree存储过程:
1:和根节点比较——通过compareTo方法比较
2:如果比根节点小,存储在左边
3:如果比根节点大,存储在右边
4:一样大,不存入

二叉树的特点是:存入的数据会按照遍历的方式个个输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值