线性表两种 存储结构各自的优缺点有哪些?

如题所述

线性表的链式存储结构:

优点:

插入和删除不需要移动插入时只需要对插入位置后的一个元素进行操作,不需要大量的移动元素。空间有效利用高。

缺点:

大量访问操作时不如顺序存储结构,因为每次都需要从头开始遍历整个线性表直到找到相应的元素为止。

线性表的顺序存储结构:

优点:

可随机存取表中任一元素。因为有下标可以操作可以快速的定位到指定位置的元素,但是不知道位置的话也需要顺序遍历。

缺点:

插入或删除操作时,需大量移动元素。合适在很少进行插入和删除运算的情况下。

扩展资料:

线性表的特征

集合中必存在唯一的一个“第一元素”。

集合中必存在唯一的一个 “最后元素” 。

除最后一个元素之外,均有唯一的后继(后件)。

除第一个元素之外,均有唯一的前驱(前件)。

线性表的基本操作

MakeEmpty(L) 这是一个将L变为空表的方法。

Length(L) 返回表L的长度,即表中元素个数。

Get(L,i) 这是一个函数,函数值为L中位置i处的元素(1≤i≤n)。

Prior(L,i) 取i的前驱元素。

Next(L,i) 取i的后继元素。

Locate(L,x) 这是一个函数,函数值为元素x在L中的位置。

Insert(L,i,x)在表L的位置i处插入元素x,将原占据位置i的元素及后面的元素都向后推一个位置。

Delete(L,p) 从表L中删除位置p处的元素。

IsEmpty(L) 如果表L为空表(长度为0)则返回true,否则返回false。

Clear(L)清除所有元素。

Init(L)同第一个,初始化线性表为空。

Traverse(L)遍历输出所有元素。

Find(L,x)查找并返回元素。

Update(L,x)修改元素。

Sort(L)对所有元素重新按给定的条件排序。

strstr(string1,string2)用于字符数组的求string1中出现string2的首地址。

参考资料来源:百度百科-线性表

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-13
顺序存储结构优点是可以实现随机读取,时间复杂度为O(1),空间利用率高;缺点是进行插入和删除操作时比较麻烦,时间复杂度为O(n),同时容量受限制,需要事先确定容量大小,容量过大浪费空间资源,过小不能满足使用要求,会产生溢出问题,虽然可以扩容,但是需要耗时间的;链式存储结构优点,插入和删除非常简单,前提条件是知道操作位置,时间复杂度是O(1),但如果不知道操作位置则要定位元素,时间复杂度也是O(n),还有一个很大的优点是没有容量的限制,可以在使用过程中动态的分配内存空间,不用担心溢出的问题;缺点是它不能实现随机读取,同时空间利用率不高.这两个结构各有优缺点,不同的地方选择不同的结构.尽量利用其优点,避免其缺点.
第2个回答  2013-04-13
线性表这种抽象结构在实现是有数组实现和链表实现两种存储结构。
数组实现我们知道在定义的时候要固定长度,因此存储数据过多时会溢出,过少时浪费存储空间,但是相关操作实现起来比较简单。
链表实现是动态获取内存单元,存储数据时基本不受空间限制(受内存大小限制),几乎不会浪费存储空间,但是相关操作实现起来比数组复杂一点。本回答被网友采纳
第3个回答  2013-04-13
刚开始学啊?刚回答了你一个问题,顺序结构的存储简单,可以随机读取任何一个位置的数据,但是其扩充容量和添加元素以及删除元素都很麻烦。相比之下,链表在这些方面都很容易实现,但是如果要随机的读取中段的数据就比较麻烦了