标题图
前言
为什么要学习数据结构与算法, 如果你学会了做安卓, javaweb, 前端等, 都是你的武功秘籍, 但是如果你的内功不够好, 再厉害的功夫也是白费.
数据结构和算法: 什么是数据结构, 什么是数据, 在计算机内部数据为 01010101..., 数据是我们生活中一切的事务都可以表示为数据, 如你和你朋友聊天的话都是数据, 朋友圈的发表内容也是内容.
数据结构是数据之间相互存在的一种或多种特定的关系, 数据之间的关系. 数据结构的关系, 要么一对一, 或者一对多.
er 图, 实体关联图. 数据与数据之间的关系, 分:
图形结构
树形结构
线性结构
集合结构
逻辑结构. PNG
图形结构
树形结构
线性结构
集合结构
以上图形的圆不代表相同的元素, 都是不同的小圈圈哦~
还有两个存储结构:
顺序存储结构和链式存储结构
顺序存储结构
链式存储结构
抽象数据类型
那么什么是抽象数据类型, 是一个数字模型以及定义在该模型上的一组操作, 数据类型是将相同的一组性质的集合, 和定义在此集合上的操作.
线性表
线性表, 线性结构, 表结构.
线性表
线性表有两种不同的存储方式
顺序存储方式线性表存储位置连续, 方便查询各个元素. 优点在查找的时候效率比较高的, 但在插入和删除的时候效率比较低.
链式存储方式线性表, 对于链表存储的单元是可以连续的, 也可以不连续, 在链式中存储包含 data 和 next->data.
- P p1=new P();
- p1.data = "data";
- P p2=new P();
- p1.data = p2;
对于链式存储结构, 优点是插入和删除效率高, 而查询效率低.
链式和顺序存储优缺点
顺序存储方式线性表优点在查找的时候效率比较高的, 但在插入和删除的时候效率比较低.
对于链式存储结构, 优点是插入和删除效率高, 而查询效率低.
比较
循环链表
循环链表为一种链式存储结构, 它的最后一个结点指向头结点, 形成一个环, 这种头尾相连的单链表称为单循环链表, 简称循环链表.
从循环链表中的任何一个结点出发, 它都能够找到其他结点, 循环链表的操作和单链表的操作是一样的, 差别就在于算法中的循环条件不同而已.
双向循环链表也叫双链表, 是单向循环链表的每个结点中, 再设置一个指向其前驱结点的指针域, 双向链表是链表的一种.
结语
本文主要讲解 Java 内功秘籍 - 线性表
小礼物走一走 or 点赞
送
来源: http://www.jianshu.com/p/6bb9bd4b7c93