当前位置:首页 » 存储配置 » 线性表顺序存储数据结构

线性表顺序存储数据结构

发布时间: 2022-08-06 22:06:49

‘壹’ 线性存储结构就是顺序存储结构吗线性表是线性存储结构吗

不是,他们的关系可以如图所示。线性表包括顺序存储结构和链式存储结构。

拓展资料:

线性表的划分是从数据的逻辑结构上进行的。线性指的是在数据的逻辑结构上是线性的。即在数据元素的非空有限集中

(1)存在唯一的一个被称作“第一个”的数据元素,(2)存在唯一的一个被称作“最后一个”的数据元素,(3)除第一个外,集合中的每个数据元素均只有一个前继元素,(4)除最后一个外,集合中的每个数据元素均只有一个后继元素。

那么对于线性表,从存储结构上分,可以有顺序存储结构和链式存储结构。顺序存储结构包括顺序表、顺序队列和顺序栈;链式存储结构包括链表、链队列和链栈。

‘贰’ 有序的线性表是不是顺序存储结构二分法查找的存储结构仅限于线性表且是有序的这句话对不对

有序的线性表是顺序存储结构。二分法查找的存储结构仅限于线性表且是有序的这句话是对的。

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

顺序存储结构需要三个属性:

存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。

线性表的最大存储容置:数组长度MaxSize。

线性表的当前长度:length。

二分法查找针对的是一个有序的数据集合,每次通过与区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0

二分查找非常高效,假设数据大小是n,每次查找后数据都会缩小为原来的一半,也就是会除以2,最坏情况下,直到查找区间被缩小为空,才停止。

(2)线性表顺序存储数据结构扩展阅读

二分法查找和普通查找的区别:

普通查找:对于数组和一个需要查找的元素来说,普通查找的原理很简单,即为从数组的第一个元素到最后一个元素进行遍历,如果第i个元素的值等于我们需要查找的值,那么返回找到的角标i,否则返回-1表示没有查找到。

二分法是从中间元素开始查找,假设整型数组为arr,要查找的元素为value,数组中间元素为arr[mid],若value小于arr[mid],则在左半边继续查找;若value大于arr[mid],则在右半边继续查找,如此循环,知道value等于arr[mid],返回的角标mid即为要找的元素的位置。

二分法查找和普通查找的优缺点分析

普通查找

优点:1)原理简单,代码容易实现。

2)不需要数组有序;

缺点:当元素个数很多时,效率较低。

二分法查找:

优点:效率比普通查找高;

缺点:要求数组必须是有序排列。

‘叁’ 线性表存储结构有哪几种

线性表存储结构有2种,分别是顺序存储和链性存储结构。
数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。数据的存储结构是指数据的逻辑结构在计算机中的表示。
在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。
链接存储结构是在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++)的数组来描述的。

‘肆’ 数据结构试验线性表的顺序存储结构是什么

#include<iostream.h>
#include<stdlib.h>
#include <malloc.h>
#define OVERFLOW 0
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100//线性表存储空间的初始增量
#define LISTINCREMENT 10 // ?
typedef struct{
int * elem;// 存储空间基址
int length;//当前长度
int listsize;//当前分配的存储容量
}SqList;
SqList L;
int InitList_Sq(SqList & L){
//构造一个新的线性表。
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)exit(OVERFLOW);//存储容量失败
L.length=0; //空表长度为0
L.listsize=LIST_INIT_SIZE;//存储初始容量
return OK;
}//InitList_Sq
int LIstInsert_Sq(SqList & L,int i,int e){
//在顺序线性表L中第i位置之前插入新的元素e
if(i<1||i>L.length+1) return ERROR;
if(L.length>=L.listsize){
int * newbase=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
int * q=&(L.elem[i-1]);
for(int * p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
int ListDelete_Sq(SqList&L,int i,int &e)
{
if((i<1)||(i>L.length))return ERROR;
int *p=&(L.elem[i-1]);
e=*p;
int *q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return OK;
}
void main()
{
SqList L;
int i,n;
int e;
cout<<"输入顺序表的个数:"<<endl;
cin>>n;
int *p=(int *)malloc(n*sizeof(int));
InitList_Sq(L);
cout<<"输入线性表"<<n<<"个元素的值"<<endl;
for(i=0;i<n;i++)
{
cin>>p[i];
L.elem[i]=p[i];
}
cout<<endl;
L.length=i;
cout<<endl;
cout<<"输入要插入元素的值"<<endl;
cin>>e;
cout<<endl;
cout<<"输入要插入的位置"<<endl;
cin>>i;
LIstInsert_Sq( L, i, e);
for(i=0;i<n+1;i++)
cout<<L.elem[i];
cout<<endl;
cout<<"输入要删除的位置"<<endl;
cin>>i;
ListDelete_Sq(L,i,e)
;for(i=0;i<n;i++)
cout<<L.elem[i];
free(p);

‘伍’ 线性表的存储结构,在什么情况下采用顺序结构为什么


看名字就差不多了吧
顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素。由于表中各个元素具有相同的属性,所以占用的存储空间相同。因此,在内存中可以通过地址计算直接存取线性表中的任一元素。这种结构的特点是逻辑上相邻的元素物理上也相邻。用顺序结构存储的线性表称作顺序表。
线性表按链式存储时,每个数据元素 (结点)的存储包括数据区和指针区两个部分。数据区存放结点本身的数据,指针区存放其后继元素的地址 (没有后继元素时设置为空字符(Null).。只要知道该线性表的起始地址 (记录在头指针中),表中的各个元素就可通过其间的链接关系逐步找到

‘陆’ 线性表的顺序存储结构和线性表的链式存储结构分别是

您好,

这道题的答案是B

首先解题需要了解线性表的定义,顺序存储结构和链式存储结构的区别,他们分别如下:

资料扩展

定义:线性表(Linear List)是由n(n≥0)个数据元素(结点)a[0],a[1],a[2]…,a[n-1]组成的有限序列。

对于线性表而言,有如下几点需要明确:

①数据元素的个数n定义为表的长度 = "list".length() ("list".length() = 0(表里没有一个元素)时称为空表)

②将非空的线性表(n>=0)记作:(a[0],a[1],a[2],…,a[n-1])

③数据元素a[i](0≤i≤n-1)只是个抽象符号,其具体含义在不同情况下可以不同,一个数据元素可以由若干个数据项组成。数据元素称为记录,含有大量记录的线性表又称为文件。这种结构具有下列特点:存在一个唯一的没有前驱的(头)数据元素;存在一个唯一的没有后继的(尾)数据元素;此外,每一个数据元素均有一个直接前驱和一个直接后继数据元素。

综上所述,这道题目选择B项。

‘柒’ 线性表若采用顺序存储结构时 要求内存中可用存储单元的地址()

选A,最佳答案没看清题吧?别人问的是采用顺序存储结构时
线性表的顺序存储结构,指的是用一段地址连续的存储单位依次存储线性表的数据元素

‘捌’ 线性表的顺序存储结构是以什么来表示数据元素之间的逻辑关系的

线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。

线性表主要由顺序表示或链式表示。在实际应用中,常以栈、队列、字符串等特殊形式使用。

顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像(sequential mapping)。它以“物理位置相邻”来表示线性表中数据元素间的逻辑关系,可随机存取表中任一元素。

由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++)的数组来描述的。

顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。

采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。

推荐课程:C语言教程。

线性表顺序存储结构的结构代码:

#define MAXSIZE 20

typedef int ElemType;

typedef struct

{

ElemType data[MAXSIZE];

int length; // 线性表当前长度

} SqList;

顺序存储结构封装需要三个属性:

存储空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置。

线性表的最大存储容量:数组的长度MaxSize。

线性表的当前长度:length。

注意:数组的长度与线性表的当前长度需要区分一下:数组的长度是存放线性表的存储空间的总长度,一般初始化后不变。而线性表的当前长度是线性表中元素的个数,是会变化的。

线性表顺序存储结构的优缺点

线性表的顺序存储结构,在存、读数据时,不管是哪个位置,时间复杂度都是O(1)。而在插入或删除时,时间复杂度都是O(n)。

这就说明,它比较适合元素个数比较稳定,不经常插上和删除元素,而更多的操作是存取数据的应用。

优点:

无须为表示表中元素之间的逻辑关系而增加额外的存储空间。

可以快速地存取表中任意位置的元素。

缺点:

插上和删除操作需要移动大量元素。

当线性表长度变化较大时,难以确定存储空间的容量。

容易造成存储空间的“碎片”

‘玖’ 数据结构中关于线性表的顺序存储结构的一些问题。

在C语言中,数组名实际上就是指向首元的指针名,一个有100个元素的数组a,从本质上来说,就是从地址a开始向后100个元素的位置都是可用的。
因此可以用指针head来表示存放元素的位置。实际中通常是用malloc来分配连续的内存空间,并将起始地址返回给head:
head = (int*)malloc(sizeof(int)*100); //分配100个元素的空间,并令head指向其首地址
接下来可以用head[i]的方式访问第i个元素,此时head表现得和数组相同。

热点内容
什么是逆算法 发布:2024-05-08 09:28:17 浏览:207
泰康平衡配置跟行业配置哪个好 发布:2024-05-08 09:19:09 浏览:597
动态创建存储过程 发布:2024-05-08 09:19:01 浏览:51
点赞熊源码 发布:2024-05-08 08:49:44 浏览:457
压缩性胸闷 发布:2024-05-08 08:18:18 浏览:528
电脑哔哩哔哩pc端的缓存 发布:2024-05-08 08:17:05 浏览:171
王者服务器崩溃估计什么时候好 发布:2024-05-08 08:16:51 浏览:575
qj压缩机 发布:2024-05-08 08:10:13 浏览:842
dhcp服务器可以分配什么参数 发布:2024-05-08 08:07:36 浏览:959
跨象限编程 发布:2024-05-08 07:58:37 浏览:62