Ⅰ 线性表的两种存储结构各有哪些优缺点
线性表具有两种存储结构即顺序存储结构和链接存储结构。
线性表的顺序存储结构可以直接存取数据元素,方便灵活、效率高,但插入、删除操作时将会引起元素的大量移动,因而降低效率
而在链接存储结构中内存采用动态分配,利用率高,但需增设指示结点之间关系的指针域,存取数据元素不如顺序存储方便,但结点的插入、删除操作较简单。
Ⅱ 比较数组,线性表和顺序表
数组就是相同数据类型的元素按一定顺序排列的集合。
一句话:就是物理上存储在一组联系的地址上。也称为数据结构中的物理结构。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
一句话:线性表是数据结构中的逻辑结构。可以存储在数组上,也可以存储在链表上。
线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里的方法。用顺序存储方法存储的线性表简称为顺序表。
一句话:用数组来存储的线性表就是顺序表。
总结:你被这几个概念混淆,是因为你没搞懂数据结构里的逻辑结构和物理存储结构。
Ⅲ 线性表和数组有什么区别
从定义上来看,线性表和数组都是数据元素的有序集
1、数组有维度(比如三维数组)的概念而线性表没有
2、数组和线性表上可进行的操作不一样。一般我们不在数组上进行数据插入和删除的操作,同样,我们也无法直接通过数据序列来访问线性表中的数据单元(比如表中第i个元素)。
Ⅳ 线性表就是一个数组我们也只用数组来描述线性表对不对
从定义上来看,线性表和数组都是数据元素的有序集,两者的区别在哪里?
首先,数组有维度(比如三维数组)的概念而线性表没有,虽然我们可以通过设计一些含指针的数据结构的线性表,使之可以模仿多维数组的操作,但这已经超出了常规的线性表的概念。
其次,数组和线性表上可进行的操作不一样。比如,一般我们不在数组上进行数据插入和删除的操作,同样,我们也无法直接通过数据序列来访问线性表中的数据单元(比如表中第i个元素)。
但是,对于初学者而言,为了方便对二者概念的消化,我们可以将一维的数组(注意是一维的)等同于线性表来理解,因为他们多数的性质都是类似的。但是我们不能说,线性表就是一个数组,这是不对的。
对该问题的回答中有人说“线性表是先存入的后出,后存入的先取出”,显然是混淆了线性表和堆栈的概念,在此不再多说,请查阅相关资料。
Ⅳ 线性表存储结构有哪几种
线性表这种抽象结构在实现是有数组实现和链表实现两种存储结构。
数组实现我们知道在定义的时候要固定长度,因此存储数据过多时会溢出,过少时浪费存储空间,但是相关操作实现起来比较简单。
链表实现是动态获取内存单元,存储数据时基本不受空间限制(受内存大小限制),几乎不会浪费存储空间,但是相关操作实现起来比数组复杂一点。
Ⅵ 数组、广义表和线性表之间有什么关系
数组是编译语言自带的一种复合数据类型。
广义表和线性表是数据结构方面的概念,它们都被定义为一个有限的序列(a1,a2,a3,…,an)。只不过线性表中ai被限定为单个的元素,而广义表中ai可以是单个元素,也可以是一个子广义表。所以线性表可以用数组这种顺序存储结构来表示,也可以用链表来表示。而广义表一般只能用链表来表示。
Ⅶ 线性表的顺序存储结构和一维数组有什么区别哪个是静态存储空间
顺序表是计算机内以一维数组形式表示的线性表,
线性表有链式存储存与顺序储存两种方式:
1,顺序储存结构是指用一组地址连续的存储单元依次存储数据元素的线性结构。
2,链式存储是线性表采用指针连接的方式存储。
线性表的长度是随着线性表的插入删除操作的进行而变化的,在任意时刻线性表的长度小于等于数组的长度,线性表的顺序储存是动态的,而一维数组是静态的。
Ⅷ JAVA语言中线性表和表可以存储在什么中
可以存储在LinkedList中
Ⅸ 线性表两种 存储结构各自的优缺点有哪些
线性表的链式存储结构:
优点:
插入和删除不需要移动插入时只需要对插入位置后的一个元素进行操作,不需要大量的移动元素。空间有效利用高。
缺点:
大量访问操作时不如顺序存储结构,因为每次都需要从头开始遍历整个线性表直到找到相应的元素为止。
线性表的顺序存储结构:
优点:
可随机存取表中任一元素。因为有下标可以操作可以快速的定位到指定位置的元素,但是不知道位置的话也需要顺序遍历。
缺点:
插入或删除操作时,需大量移动元素。合适在很少进行插入和删除运算的情况下。
(9)线性表和表可以存储在数组中吗扩展阅读:
线性表的特征
集合中必存在唯一的一个“第一元素”。
集合中必存在唯一的一个 “最后元素” 。
除最后一个元素之外,均有唯一的后继(后件)。
除第一个元素之外,均有唯一的前驱(前件)。
线性表的基本操作
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的首地址。
参考资料来源:网络-线性表
Ⅹ C语言中构造一个顺序存储的线性表,为什么其中的元素是用数组存储的。
还是说只要是在内存中申请了一块连续的地址空间存储数据只要知道其首地址都可以用数组的形式访问其中的元素呢?
就是这样的。
线性表的特点就是长度可变,如果使用常规的数组,就不能实现这个特性,因为数组是定长的。而在堆中申请的内存可以通过参数在运行时指定它的大小,且可以调整它的大小,并且其使用方式和数组一样,使用索引访问。
int*p=(int*)malloc(sizeof(int)*5);
p[0];//第一个元素
p[1];//第二个元素
p[2];//第三个元素
//...
free(p);