2009-12-05 16:20:20
数据的存储结构有数据存储和链式存储。
首先,对于线性表,顺序存储有定长数组和堆内存的数组。获得顺序表的具体位置的元素及表的长度比较直接,但插入删除等操作需要移动大量的元素,时间复杂度较大。
对于链表,运用了指针,可使数据的插入和删除操作更方便,但是对于获得线性表的长度并不是直接的。
结合顺序表和链表的优点,静态链表既可以直接获得特定位置上的元素,也可以通过指针再不移动大量元素的前提下实现线性表的一些操作。
在顺序存储和链式存储的基础上,之后的栈、队列,及串的存储结构都在这两种结构之上进行扩展。
比较之下,栈的顺序存储要比链式存储更实用。因为结合栈的特性,数据的存储和删除都是在最后一个元素上进行,使用链式存储意义不大,而采用顺序存储(定长数组和堆内存),在操作方面更方便,另设一个指向站定元素指针,方便进行栈的相关操作。当然也可以在结构体struct中加一栈长度的成员(如有需要的话,例如涉及栈的长度时判断插入、删除未知是否合理,在定长数组存储时,是否允许插入等),这样不必用strlen求串长。
还有串的三种存储结构:定长数组,堆内存,和块链存储。但相比较,块链存储操作起来最复杂,一般不采取,而定长数组顺序存储容易出现截断现象,解决这个问题需要为数组增加存储空间,因此堆内存的存储结构更合理。
根据队列的特性,队列的存储结构采用链式存储更适宜。
另设一对头指针和对为指针。
总之,各种存储结构是相互关联的。栈和队列可以说是特殊的顺序表或链表。