‘壹’ 什么是数据域,什么是指针域
数据域是结点中存储数据元素的部分。指针域是结点中存储数据元素之间的链接信息即下一个结点地址的部分。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
(1)存储结点中数据域占用的存储量扩展阅读:
由于的链表结点中除包含保存数据元素的自身信息的数据域外,还有表示数据元素之间的链接信息的指针域,因此比顺序存储结构的存储密简段态度低,存储燃派空间的利用率也较低。
逻辑上相邻的数据元素在物理上不一定相邻,可用于存储线性表、树、图等多种逻辑结构。插入、删除操作比较灵活,不必移动数据元素,只要改变拦源结点中的指针域的值即可。
‘贰’ 求下列单链表的存储密度值.......
结点数据本身占的存储量 是节点的数据存储量 也就是2
节点脊山整体占的空间2+4=6
所以密度为 2/6=33.33%
剩下的66.67%是指针占用的空间中野梁
另外,如果是数组存储的话,也卖运就是顺序存储
密度为100%
‘叁’ 存储结构的概念
存储结构的概念
数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。
数据的存储结构是指数据的逻辑结构在计算机中的表示。
数据储存结构
分类
顺序存储方法它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。
链接存储方法它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。
存储和链接存储的基本原理
顺序存储和链接存储是数据的两种最基本的存储结构。
在顺序存储中,每个存储空间含有所存元素本身的信息,元素之间的逻辑关系是通过数组下标位置简单计算出来的线性表的顺序存储,若一个元素存储在对应数组中的下标位置为i,则它的前驱元素在对应数组中的下标位置为i-1,它的后继元素在对应数组中的下标位置为i+1。在链式存储结构中,存储结点不仅含有所存元素本身的信息,而且含有元素之间逻辑关系的信息。
数据的链式存储结构可用链接表来表示
其中data表示值域,用来存储节点的数值部分。Pl,p2,…,Pill(1n≥1)均为指针域,每个指针域为其对应的后继元素或前驱元素所在结点(以后简称为后继结点或前驱结点)的存储位置。通过结点的指针域(又称为链域)可以访问到对应的后继结点或前驱结点,若一个结点中的某个指针域不需要指向其他结点,则令它的值为空(NULL)。
在数据的顺序存储中,由于每个元素的存储位置都可以通过简单计算得到,所以访问元素的时间都相同;而在数据的链接存储中,由于每个元素的存储位置保存在它的前驱或后继结点中,所以只有当访问到其前驱结点或后继结点后才能够按指针访问到,访问任一元素的时间与该元素结点在链式存储结构中的位置有关。
‘肆’ 为什么数据流在内存中占用空间少
数据流在内存中占用空间少的原因:数据乱蠢中属性(维)的取值范围非常大,取档历的值非常多。根据查询相关公开信息显示:数据流的范围广域,这是指数据属性(维)的取值范围非常大,取的值非常多,如地域、手机号码、人、网络节点等。这才是导致数据流无法在内存或硬盘哗山中存储的主要原因。维度小,即使到来的数据量很大,也可以在较小的存储器中保存。
‘伍’ 单链表的存储密度是多少
单链表的存储密度小于1。
原因:“存储密度=单链表数据项所占空间/结点所占空间”,而“结点所占空间=数据项所占空间+存放后继结点地址的链域”;所以,存储密度小于1。
数据结构中单链表的存储密度:链表的每个节点除了数据域用来存储元素外,还要额外的设置指针域,用来存储用来存储指示元素之间的逻辑关系的指针。
存储密度是指数据元素本身所占的存储量和整个结点结构所占的存储量之比。
假设单链表数据元素本身的存储量为N,指针域所占的存储量为M,则存储密度为:N/(N+M)。而结点所占空间=数据项所占空间+存放后继结点地址的链域。
在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度)。当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入的数据行超过8092字节时将导致Transact-SQL语句失败,并产生错误信息。SQL
Server对每个表中行的数量没有直接限制,但它受数据库存储空间的限制。每个数据库的最大空间1048516TB,所以一个表可用的最大空间为1048516TB减去数据库类系统表和其它数据库对象所占用的空间。
‘柒’ 链式存储结构的存储密度小,反而空间利用率却比顺序存储结构的大为什么
因为链式存储结构的存储空间在逻辑上是连续的,但是在物理上是离散的;而顺序存储结构的存储空间在逻辑上是连续的,在物理上也是连续的。
链式存储可以将一些零碎的小空间链接起来组成逻辑上连续的空间,因此空间利用率较高;而顺序存储是占用磁盘上一片连续的物理空间,小于存储要求的那些空间不能被使用,因此会跳过那些小存储空间,往后寻找满足要求的连续的存储空间,于是空间利用率就变低了。
但是,顺序存储中所有存储单元存储的都是数据信息;而链式存储中每个存储节点除了存储数据信息外,还需要使用一个链域来指向下一个存储结点,这样就可以将物理上离散的空间链接成逻辑上连续的,因此存储同样大小的内容时,链式存储所用空间比顺序存储所用空间要大,所以存储密度就小些。
‘捌’ 邻接表的网络存储空间很大吗
在具体讲解邻接表存储图的实现方法之前,先普及一个"邻接点链铅拿"的概念。在图中,如果两个点相互连通,即通过其中一个顶点,可直接找到另一个顶点,则称它们互为邻接点。
邻接指的是图中顶点之间有边或者弧的存在。
邻接表存储图的实现方式是,给图中的各个顶点独自建立一个链表,用节点存储该顶点,用链表中其他节点存储各自的临界点。
与此同时,为了便于管理这些链表,通常会将所有链表的头节点存储到数组中(也可以用链表存储)。也正因为各个链表的头节点存储的是各个顶点,因此各链表在存储临界点数据时,仅需存储该邻接顶点位于数组中的位置下标即可。
例如,存储图 1a) 所示的有向图,其对应的邻接表如图 1b) 所示:
邻接表存储有向图
图 1 邻接表存储有向图
拿顶点 V1 来说,与其相关的邻接点分别为 V2 和 V3,因此存储 V1 的链表中存储的是 V2 和 V3 在数组中的位置下标 1 和 2。
从图 1 中可以看出,存储各顶点的节点结构分为两部分,数据域和指针域。数据域用于存储顶点数据信息,指针域用于链接下一个节点,如图 2 所示:
邻接表节点结构
图 2 邻接表节点结构
在实际应用中,除了图 2 这种节点结构外,对于用链接表存储网(边或弧存在权)结构,还需要节点存储权的值,因此需使用图 3 中的节点结构:
邻接表存储网结构使用的节点
图 3 邻接表存储网结构使用的节点
图 1 中的链接表结构转化为对应 C 语言代码如下:
#define MAX_VERTEX_NUM 20//最大顶点个数
#define VertexType int//顶点数据的类型
#define InfoType int//图中弧或者边包含的信息的类型
typedef struct ArcNode{
int adjvex;//邻接点在数组中的位置下标
struct ArcNode * nextarc;//指向下一个邻接点的指针
InfoType * info;//信息域
}ArcNode;
typedef struct VNode{
VertexType data;//顶点的数据域
ArcNode * firstarc;//指向邻接点的指针
}VNode,AdjList[MAX_VERTEX_NUM];//存储各链表头结点的数组
typedef struct {
AdjList vertices;//图中顶点的数组
int vexnum,arcnum;//记录图中顶点数和边或弧数
int kind;//记录图的种类
}ALGraph;
邻接表计算顶点的出度和入度
使用邻接表计算无向图中顶点的入度和出度会非常简单,只需从数组中找到该顶点然后统计此链表中节点的数量即可。
而使用邻接表存储有向图时,通常各个顶点的链表中存储的都是以该顶点为弧尾的邻接点,因此通过统计各顶点链表中的节点数量,只能计算出该顶点的出度,而无法计算该顶点的入度。
对于利用邻接表求某顶点的入度,有两种方式:
遍历整个邻接表中的节点,统计数据域与该顶点所在数组位置下标相同的节点数量,即为该顶点的入度;
建立一个逆邻接表,该表中的各顶点链表专门用于存储以此顶点为弧头的所有顶点在数组中的位置下标。比如说,建立一张图 1a) 对应的逆邻接表:
逆邻接表示意图
对于具有 n 个顶点和 e 条边的无向图,邻接表中需要存储 n 个头结点和 2e 个表结点。在图中边或者弧稀棚搭疏的时候,使用邻接表要比前一节介绍的邻接矩阵更加节省空间。
回答于 2022-11-01
抢首赞
老人用哪种造口袋方便-淘宝热卖好物汇集,品牌众多,放心购!
【买3送5】造口袋封条造口护理用品防漏夹子造瘘袋便袋封口条10根
¥42.75 元
怡康一件式开口造口袋造瘘袋人工肛门袋大便袋10个送尾夹2
¥50 元
造口裤挂尿袋裤子老年人裤膀胱造瘘胆手术后护理专用裤春夏薄款
¥116 元
造瘘裤病人护理裤肾造口肠道造口老人护理用品病人手术后装尿袋裤
¥150 元
造瘘裤尿袋裤造口裤膀胱手术装尿袋引流袋裤子病人护理裤老人专用
¥96 元
淘宝热卖广告
哪个牌子好护肤品-上淘宝选好物,轻松下单,放心购物!
哪个牌子好护肤品-淘宝热卖好物,大牌汇聚,畅享购物!热卖优质商品,淘你满意!
淘宝热卖广告
护肤品有哪些品牌-淘宝热卖好物汇集,品牌众多,放心购!
护肤品有哪些品牌-购物上淘宝,品类集结,热卖好物!海量优质商品,轻松畅购!尽享优惠,买东西上淘宝,一站轻松购!
广告
数据结构,求无向图用邻接矩阵和邻接表的存储空间大小,怎么算激配?
邻接表所需的存储空间为e(边数),但不适合查询两点间是否存在路径邻接矩阵所需的存储空间为你n^2,适合查询两点间是否存在路径对于第二问,邻接表所需的存储空间为9900,邻接矩阵所需的存储空间为你n^2=10000,差不多,所以选性能更优的邻接矩阵实际上像(2)这种稠密图(其实是个满图)一般适合邻接矩阵
司马刀剑
1点赞1评论
更多专家
邻接表的网络存储空间很大吗
专家1对1在线解答问题
5分钟内响应 | 万名专业答主
马上提问
最美的花火 咨询一个电子数码问题,并发表了好评
lanqiuwangzi 咨询一个电子数码问题,并发表了好评
garlic 咨询一个电子数码问题,并发表了好评
188****8493 咨询一个电子数码问题,并发表了好评
篮球大图 咨询一个电子数码问题,并发表了好评
动物乐园 咨询一个电子数码问题,并发表了好评
AKA 咨询一个电子数码问题,并发表了好评
图解:什么是“图”?
作为图的开始,我们先来看一个经典的问题,它被认为是图论的起源。 欧拉在1735年提出,并没有方法能圆满解决这个问题,他更在第二年发表在论文《柯尼斯堡的七桥》中,证明符合条件的走法并不存在 欧拉把实际的抽象问题简化为平面上的点与线组合,每一座桥视为一条线,桥所连接的地区视为点。这样若从某点出发后最后再回到这点,则这一点的线数必须是偶数,这样的点称为偶顶点。相对的,连有奇数条线的点称为奇顶点。由于柯尼斯堡七桥问题中存在4个奇顶点,它无法实现符合题意的遍历。 之后,不少数学家都尝试去解析这类事例。而这些解析,最后发展成为了数学中的图论233。 图是一种非线性表数据结构,图中的元素我们叫做顶点,图中建立的连接关系我们叫做边。,图主要分为四种:无向图、有向图、加权图、加权有向图。 我们把有边有方向的图叫做“有向图”,把边没有方向的图叫做“无向图”,把边带有权重的图叫做“加权图”,这些概念其实都比较容易理解,你可以参考下面的几幅图对比一下。我们可以分别类比生活中的:知乎关注(有向)、微信交友(无向)和QQ好友亲密度(带权值)。 在图的表示中,我们定义 度 的概念。对于无向图而言,一个顶点的 度 是指跟该顶点相连接的边的条数;对于有向图而言,我们分别定义 入度 和 出度 ,顶点的入度表示有多少条边指向这个节点,顶点的出度表示有多少条边以这个节点为起点指向其他节点。 图的存储方法主要有两种:邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix)。我们首先来介绍一下这两种存储方法。 邻接矩阵,顾名思义,就是利用矩阵去描述图,它的底层依赖于一个二维数组。对于无向图而言,如果 顶点i 与 顶点j 之间有边,那么我们就把 A[i][j] 和 A[j][i] 标记为1,它们之间没有边就标记为0;对于有向图而言,如果 顶点 i 到 顶点 j 之间,有一条箭头从 顶点 i 指向 顶点 j 的边,那我们就将 A[i][j] 标记为 1。同理,如果有一条箭头从 顶点j 指向 顶点 i 的边,我们就将 A[j][i] 标记为 1。对于带权图,数组中就存储相应的权重。 我们使用邻接矩阵来表示图,虽然的确很直观明了,但是却比较浪费空间。 其一,对于无向图来说, A[i][j] 永远等于 A[j][i] ,我们只需要使用一半矩阵就可以成功地表示,那另一半空间就被浪费掉了; 其二、如果我们存储的是稀疏图,也就是顶点很多,但每个顶点的边并不很多,此时邻接矩阵的存储方法就更加浪费空间了。好比微信有好几亿的用户,对应到图上就是好几亿的顶点。但是每个用户的好友并不会很多,一般也就几百个而已。如果我们用邻接矩阵来存储,那绝大部分的存储空间都被浪费了。 总结一下,当图为稀疏图、顶点较多,即图结构比较大时,更适宜选择邻接表作为存储结构。当图为稠密图、顶点较少时,使用邻接矩阵作为存储结构较为合适。 我们使用一个以顶点为索引的列表数组,其中数组中的每个元素都指向一个单独的链表,该链表存储了与数组中顶点相邻的所有顶点。有点绕口,不过我为你准备了一张图,我相信结合图片你肯定可以更好地理解。 相比于邻接矩阵, 邻接表比较节省存储空间,但是使用起来却比较耗费时间 。不过, 它的形式更为自由和灵活 ,比如,在链表过长的情况下,我们可以把链表用平衡二叉查找树(红黑树)替代,这样的话就比较高效了。 好了,关于图的内容就到这里了,我希望通过这篇文章你对于图有了一个初步的认识!下一次,我们会介绍深度优先搜索和广度优先搜索,小超与你不见不散!
‘玖’ 什么是数据结构
要想知道什么是数据结构?首先得知道数据是什么?数据是对客观事务的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号总称。那为何加上XX“结构”XX两字?
数据元素是数据的基本单位,而茄磨册任何问题中,数据元素都不是独立存在的,它们之间总是存在着某种关系,这种数据元素之间的关系我们称之为结构。
因此,我们有了以下定义:
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高颤宏的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
简单讲,数据结构就是组织,管理以及存储数据的方式。虽然理论上所有的数据都可以混杂,或者糅合,或者饥不择食,随便存储,但是计算机是追求高效的,如果我们能了解数据结构,找到较为适合当前问题场景的数据结构,将数据之间的关系表现在存储上,计算的时候可以较为高效的利用适配的算法,游腔那么程序的运行效率肯定也会有所提高。
常用的4种数据结构有:
集合:只有同属于一个集合的关系,没有其他关系。
线性结构:结构中的数据元素之间存在一个对一个的关系
树形结构:结构中的数据元素之间存在一个对多个的关系
图状结构或者网状结构:图状结构或者网状结构。
数据存储结构指的是逻辑结构在计算机存储空间中的存放形式(也称为物理结构)。一般来说,一种数据结构的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序存储、链式存储、索引存储和哈希存储等。顺序存储:用一组地址连续的存储单元依次存储集合的各个数据元素,可随机存取,但增删需要大批移动。链式存储:不要求连续,每个节点都由数据域和指针域组成,占据额外空间,增删快,查找慢需要遍历。索引存储:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。检索快,空间占用大。哈希存储:将数据元素的存储位置与关键码之间建立确定对应关系,检索快,存在映射函数碰撞问题。
‘拾’ 链表中每个节点所占用的储存空间是连续的,但节点之间在空间上可以连续也可以不连续 对这句话不是很明白
一个链表有很多个节点,各个节点之间通过指针连接起来,所以各个结点之间的位置可以不连续,也就是可以放在不同的位置,所以在空间上可以是不连续的;但对于一个节点,因为节点内部是一个整体,所以就要占用连续的存储空间。
队列是先进先出的栈是先进后出的都是线性表线性表是最基础、最常用的数据结构,线性表中数据元素都是一对一的对应关系。可以不连续,它的存储空间分两段,一段存放数据,另一段存放着地址,链表是通过地址将数据串联起来的数组必须是连续的存储空间。
(10)存储结点中数据域占用的存储量扩展阅读:
一个链表或者多个链表使用独立的存储空间,一般用数组或者类似结构实现,优点是可以自动获得一个附加数据:唯一的编号,并且方便调试;缺点是不能动态的分配内存。当然,另外的在上面加一层块状链表用来分配内存也是可以的,这样就解决了这个问题。
这种方法有时候被叫做数组模拟链表,但是事实上只是用表示在数组中的位置的下标索引代替了指向内存地址的指针,这种下标索引其实也是逻辑上的指针,整个结构还是链表,并不算是被模拟的(但是可以说成是用数组实现的链表)。