数据结构--线性表
什么是线性表
根据课本上的解释,线性表就是n(n >= 0)个相同数据元素的有限序列,其中n为表长,当n==0时先行表示空表。课本的上的说法往往是很难理解的,对于本科就是计算机专业的同学来说还行,但是对于本科非计算机专业同学理解起来可能就有点吃力了。那么,一句话简单的来说,其实线性表就是一些相同类型的数据挨个的排列着,就像一条线在牵引着一样。如果你还不懂,或者是不是太清楚,那我们就以张图来说明。
其实,线性表从逻辑结构上来看就是这样的了。
补充:逻辑结构和物理结构
所谓逻辑结构说白了就是从主观上看起的或者感觉起来是什么样子的(比如我们的线性表(图一),感觉起来就是很多的相同类型的数据元素像一条线一样的挨个排列起来)
物理结构,物理结构就是我们的数据实际在存储中的结构,比如在内存或者是外存中可能是占用一连串的存储空间来存放的,也有可能是彼此互不相邻离散着存放的。
没有什么是一张图解决不了的事情,如果不行就两张。
那么我们首先来看连续存储的
连续存储的数据在内存中其实就是这个样子。
再看离散存储的
离散存储是通过指针的方式将各个离散分布的数据连接起来,就像图中这样。
通过上面的讲述,我们也就要引出了线性表的类型。
线性表的类型
如果从逻辑结构上来看,线性表也没有怎么分类,如果从物理结构来看,那么就要给线性表分类了。
从物理结构上来分,线性表又可以分为顺序表和链表。
那么我们首先就来介绍顺序表。通过上文的补充,相信很多同学已经想到了什么是顺序表。
顺序表就是在连续的物理存储单元中依次挨个的存放我们的数据。就像上面图中图一的那样。
那么,我们要给出顺序表的具体的定义。
顺序表:线性表的顺序存储又称为顺序表。它是一组地址连续的存储单元,依次存储线性表中的数据元素,从而使逻辑上相邻的两个元素在实际物理位置中也是相邻的(图二)。
链表:线性表的离散存储又称为链表(单链表和双链表,这里先讲单链表)。它是一组不连续的存储空间,将各个元素分别存储在这些空间中(离散的)。其中他们之间通过指针的方式进行连接(图三)。
线性表的实现
这里我会给出线性表的两种实现方式,主要是顺序表和链表的方式。
总结
线性表其实并不难理解,相信学过计算机的同学都能学的明白。但是明白并不代表着我们能很轻松的通过代码实现,我们要在明白的基础之上多加练习和巩固,争取能够更加深入的理解,更加熟练的通过代码进行实现。