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