写在前面的话:数据结构很多人都是只看不去实战,这样很难取得很好的效果,我会在每个知识点下面配套几道从Leetcode和剑指offer上找到的经典题目(比如本章说完链表以后,会配套LeetCode.206等题目)。程序这种东西还是多敲键盘比较好,纸上得来终觉浅,绝知此事要躬行。
数据结构中的线性表 是理解图,堆栈,二叉树的基础,他的官方定义为:
线性表 是 零个或多个数据元素的有限序列。
比如:a1, a2, a3 ,a4, ...... , ai-1, ai, ai+1,....., an
ai-1 是ai的前驱元素,而ai+1是ai的后继元素。我们可以得知,当i=2, ...., n-1时,他们只有唯一的一个前驱元素和后继元素。
并且,在线性表中,a1~an所代表的元素必须是相同的数据类型的元素。(比如a1-an代表有n个不同类型的人,但他们都是人,你不能在其中添加一个帽子的存储)。
线性表在物理结构上可以分为:顺序存储结构和链表存储结构。
第一节:首先我们了解下顺序存储结构:
顺序存储结构就是在内存空间中开辟一片连续的空间,然后把数据按照顺序进行存储的一种方式。
他包含三个属性:1、存储空间的起始位置(也就代表我们定义了一个数组)2、最大的存储容量(数组最大长度)3、线性表的当前长度
属性2和3的区别是:数组的长度是基本不变的,这是我们在申请内存空间的时候就已经确定好的,而我们的线性表的长度是代表着元素个数,是不确定的长度。则两者的关系为: 线性表的当前长度