如果你想成为一个合格的程序员,那么除了对于编程语言的熟练掌握之外。那就是对于数据结构,这门令无数程序员头秃的学科的掌握。放眼望去,只有掌握了这门内功,你才能够逐渐走向癫疯!!!否则,如无根之木,终其一生,也只能徘徊在那扇大门之外。碌碌终生,最后只能轻叹一声:程序员是一碗青春饭呐!
下面,请准备好防脱洗发水,让我们逐渐走向癫疯!
什么是线性表,很多书上都会举例子,说,线性表,就是学生排队一样。每一个学生前面都只可能有一个人,后面也只会有一个人。那么前面的那个人,我们给他一个名字,叫直接前驱。后面那个呢,也给它一个名字,叫直接后继!当然了,你们班学生的数量肯定是有限的喽。ok,至此,我们就知道了线性表的定义。官方的定义,我这里就不提了哈。
那么线性表,又分为哪几类呢?见下图。
顺序存储,就是按顺序去排队。以顺序存储结构存储的顺序表,叫做顺序表
张三 | 李四 | 王五 |
链式存储,就像一列火车,每一节车厢,都连接着下一个车厢。每一个节点都会有下一个节点的地址。以链式存储结构存储的顺序表,叫做链表
但是,顺序表和链表都是线性表。他们符合线性表的所有特性!那么顺序表和链表,又有哪些自己的特性呢?
试想一下,一列学生,如果你想找到第五个学生,是不是很容易呢?你只需要大喊一声!第五名,出列!他自己就会出来。计算机也是惊人的相似呐!这就是顺序表的特性:随机访问。当然了,排列的越紧凑,越有利于空间的利用,那么,这就是顺序表的第二个特性:占用连续的存储空间,换句话说,那就是空间的利用率高!
反观之。链式存储的特点则是:节点的存储空间利用率较低,但他的存储特点,又决定了,他是可以灵活的增加节点的,也就是支持存储空间的动态分配。
好了,到这里,我们初步认识了线性表。接下来,让我们继续深入!刚开始写,还是写的很生硬,不喜勿喷哦!
持续更新中。。。