㈠ 顺序存储结构和链式存储结构的优缺点
存储空间
顺序存储结构是要求事先分配存储空间的,即静态分配,所以难以估计存储空间的大小。估计过大会造成浪费,估计太小又容易造成空间溢出。
而链式存储结构的存储空间是动态分配的,只要计算机内存空间还有空闲,就不会发生溢出。
另外还可以从存储密度的角度考虑,存储密度的定义公式为:一般来说,存储密度越大,存储空间的利用率就越高。
显然,顺序存储结构的存储密度为1,而链式存储结构的存储密度小于1。
运算时间
顺序表是一种顺序存储结构,对表中任一结点都可以在O(1)时间复杂度下直接访问;而访问链表中的某个结点时,必须从头指针开始沿着链表顺序查找,时间复杂度为O(n)。
链表顺序查找,时间复杂度为O(n)。
因此,如果对线性表的操作以查找为主,则采用顺序存储结构较好;若以插入、删除为主,则采用链式存储结构为宜。
㈡ 顺序存储和链式存储属于什么存储结构
一般,存储结构分为:顺序顺序存储结构和链式存储结构。
常见链式存储结构有:链表,树,图。
㈢ c语言编程 关于顺序存储与链式存储
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
structnode
{
intdata;
node*next;
};
node*create(inta[],intlen)
{
inti;
node*head=newnode;
head->data=a[0];
node*p=head;
node*q;
for(i=1;i<len;i++)
{
q=newnode;
q->data=a[i];
p->next=q;
p=q;
}
p->next=NULL;
returnhead;
}
node*insert(node*head,intk)
{
node*temp=newnode;
temp->data=k;
temp->next=head;
head=temp;
returnhead;
}
node*dele(node*head,intm)
{
inti;
node*p=head;
node*x=newnode;
node*y=newnode;
if(m==1)
{
node*q=head;
head=head->next;
free(q);
}
else
{
for(i=1;i<m;i++)
{
x=p;
p=p->next;
y=p->next;
}
x->next=y;
free(p);
}
returnhead;
}
voidmain()
{
inta[10]={1,2,3,4,5,6,7,8,9,10};
intlen=10;
node*head=newnode;
head=create(a,len);
node*p=head;
printf("原数组为:");
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
printf("
输入要插入的元素:");
intk;
scanf("%d",&k);
head=insert(head,k);
p=head;
printf("增加元素后的数组为:");
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
printf("
要删除的元素位置为:");
intm;
scanf("%d",&m);
head=dele(head,m);
p=head;
printf("删除元素后的数组为:");
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}
}
此处为链表实现的方式,链表的好处在于内存不必连续,并且顺序存储
顺序存储结构的特点是:连续的内存,随机存储。
㈣ 线性顺序存储结构和链式存储结构有什么区别
区别:
1、顺序存储需要开辟一个定长的空间,读写速度快,缺点不可扩充容量(如果要扩充需要开辟一个新的足够大的空间把原来的数据重写进去)。
2、链式存储无需担心容量问题,读写速度相对慢些,由于要存储下一个数据的地址所以需要的存储空间比顺序存储大。
㈤ 线性表的顺序存储与链式存储的优缺点各是什么
1.空间上
顺序比链式节约空间。是因为链式结构每一个节点都有一个指针存储域。
2.存储操作上
顺序支持随机存取,方便操作
3.插入和删除上
链式的要比顺序的方便(这句话是不能这么说的,因为插入的话顺序表也很方便,问题是顺序表的插入要执行更大的空间复杂度,包括一个从表头索引以及索引后的元素后移,而链表是索引后,插入就完成了)
㈥ 链式存储结构和顺序存储结构的区别
区别如下:
1、链表存储结构的内存地址不一定是连续的,但顺序存储结构的内存地址一定是连续的。
2、链式存储适用于在较频繁地插入、删除、更新元素是,而顺序存储结构适用于频繁查询时使用。
3、顺序比链式节约空间,是因为链式结构每一个节点都有一个指针存储域。顺序支持随机存取,方便操作。链式的要比顺序的方便,快捷。
官方一点来说可以使用网络的介绍:顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
当然不得不说一般这种官方的解释都是不太适合我的,所以用小甲鱼的方式来说这个概念的话,简单来说就是,用一段连续的地址存放数据元素,数据间的逻辑关系和物理关系相同。
优点1:存储密度大,空间利用度高,比链式存储节约空间。
优点2:存储操作上方便操作,顺序支持随机存取,查找会比较容易。
缺点1:插入或者删除元素时不方便,花费的时间更多。
㈦ 数据结构的几道题
第一题:C
数据的逻辑结构分为:线性结构和非线性结构
数据的存储结构分为:顺序存储结构和链式存储结构
第二题:B
第四题:C我个人可以利用二路归并的排序方法,利用特殊情况L1(low1,high1),L2(low2,high2),且low2>hign1。
第七题:A
若A是一个m*n的二维数组,数组下标从零开始,以列为主序存储,则address(A[i,j])=adderss(A[0,0])+(j*n+i)*L其中L为一个元素所占的存储空间
则在此题目中address(A[5,5])=1000+(5*6+5)*5=1000+175=1175
若以行为主序存储,则adderss(A[i,j])=adderss(A[0,0])+(i*m+j)*L
在此题目中address(A[5,5])=1000+(5*6+5)*5=1000+175=1175
即在此题目中以行为主序存储和以列为主序存储,最终结果相同。
第九题:B
完全二叉树是指除最后一层外,每一层上的结点数都达到最大值,在最后一层上指缺少右边的若干结点。根据定义可以先求出深度为H-1的满二叉树的结点个数为2^(H-1)-1,则继而可以得到深度为H的满二叉树的结点最少为2^(H-1)。
第十题:D
无向图的极大连通子图就叫做连通分量。问题关键在于n个结点的无向图有很多种,所以连通分量数不能确定。
第十一题:D
第十二题:D
二叉排序树的定义为:左子树上的所有结点值均小于根节点的值,右子数上的值均不小于根结点的值。
又因为中序遍历的循序是:先访问左结点,再访问根结点,最后访问右结点。
根据以上两个原则可以得到.对一棵二叉排序树采用中根遍历进行输出的数据一定是递增序列。
第二十二题:
一棵具有n个结点的树,所有非终端结点的度均为k,则此二叉树为K叉树,这棵树只右度为K和度为0的结点,设度为K的结点数为a,度为0的结点数为b,则n=a+b。又设二叉树的所有分支为m,则m=k*a,同样可以得到n=m+1。
综上可以得到b=[(n-1)*(k-1)/k-1]。
以上是我自己对以上题目的解答,如果有什么不妥之处请与我联系继续探讨。
㈧ 顺序存储结构及链式存储结构哪个更具有 效率
顺序存储结构是在内存中开辟一个连续的空间用来存储数据,因此对于内存的需求和苛刻,必须是连续的空间.在数据查找(特别是不按照规律排列的数据),时间复杂度教少.效率高.
链式存储结构是采取连表指针来指示数据的存储位置,这就可以是在内存中随意的存储,没有必须连续储存空间的要求,对于内存的要求相对教容易.但是要是是从小到大顺序排列的数据,链式存储结构的时间复杂度教小,效率高.但是要是不规则排布的数据一般时间复杂度较高,效率更低
㈨ 顺序存储结构和链式存储结构优缺点
顺序存储结构和链式存储结构的区别
链表存储结构的内存地址不一定是连续的,但顺序存储结构的内存地址一定是连续的;
链式存储适用于在较频繁地插入、删除、更新元素时,而顺序存储结构适用于频繁查询时使用。
顺序存储结构和链式存储结构的优缺点:
空间上
顺序比链式节约空间。是因为链式结构每一个节点都有一个指针存储域。
存储操作上:
顺序支持随机存取,方便操作
插入和删除上:
链式的要比顺序的方便(因为插入的话顺序表也很方便,问题是顺序表的插入要执行更大的空间复杂度,包括一个从表头索引以及索引后的元素后移,而链表是索引后,插入就完成了)
例如:当你在字典中查询一个字母j的时候,你可以选择两种方式,第一,顺序查询,从第一页依次查找直到查询到j。第二,索引查询,从字典的索引中,直接查出j的页数,直接找页数,或许是比顺序查询最快的。
㈩ 数据结构中 顺序存储结构和链式存储结构有什么不同
顺序存储结构在内存中是一快地址连续的存储单元,可以随机访问其中的元素,而链式存储结构则不是连续的存储单元而是靠指针指示存储地址,访问时只能顺着指针访问