线性表从物理结构上分,有两种存储结构,一种是顺序存储结构,另一种是链式存储。这里呢,先讲一下顺序存储,毕竟,这种存储方式比较简单。
那么什么是顺序存储结构呢?以下,是书中关于线性表顺序存储的标准定义:
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
通过这段标准定义,可以很容易的想到,顺序存储就是通过数组这样的线性存储结构来存放相关元素。因为,数组就是一段地址连续的存储单元。
那么关于顺序存储结构,有哪些注意点呢?
1.存储空间大小即数组最大长度。很明显,为了能够存储够相关的元素,一定要有适当的空间(MAXSIZE)。
2.存储位置。存储空间是一段连续的地址,所以,数组的首地址就是该线性表的存储位置(data)。
3.当前线性表的长度(length)。
以下,线性表的顺序存储结构代码:
#define MAXSIZE 20 //the max length of the list typedef int ElemType; struct SqList{ ElemType data[MAXSIZE]; int length; };
关于数组长度与线性表长度。数组长度指的是能够存储元素的最大的空间量的多少,这个值是个常量,它是不变的。而线性表长度,指的是,当前线性表的元素的个数,它是一个可以变化的量。
既然线性表的元素是借助数组来做的存储。那么,就不得不注意元素的地址。在内存中,每一块内存都有相应的地址编码来标识这块区域。并且,在数组中,第一个元素的下标位置为0,因为数组中的计数是从0开始的。也就是说,第i个位置的元素,其在数组中的存储位置为i-1。并且,由于不同的数据类型所占用的地址不同。在32位计算机中,int类型的数据占4个字节,char类型的数据占1个字节。假设,数组的数据类型是int型,那么,数组中的每一个元素都是int型的,也就是,每一个元素所占地址大小都是4字节。那么获取第i+1个元素的地址,为:LOC(ai+1) = LOC(ai) + 4;若数组的数据类型为c类型,那么第i+1个元素的地址为:LOC(ai+1) = LOC(ai) + c。
所以,对于,第i个数据元素ai的存储位置可以由a1推算得出:LOC(ai) = LOC(a1) + ( i - 1 ) * c。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。